For the complete documentation index, see llms.txt. This page is also available as Markdown.

Almacén vectorial

Neuron te proporciona componentes listos para usar para conectar tu agente a bases de datos vectoriales.

Actualmente ofrecemos soporte de primera parte para el siguiente almacén vectorial:

Memoria

Esta es una implementación de un almacén vectorial volátil que mantiene tus embeddings en la memoria de la máquina durante la sesión actual. Es útil cuando no necesitas almacenar los embeddings generados para uso a largo plazo, sino solo durante las sesiones de interacción actuales (o para uso local).

namespace App\Neuron;

use NeuronAI\RAG\RAG;
use NeuronAI\RAG\VectorStore\MemoryVectorStore;
use NeuronAI\RAG\VectorStore\VectorStoreInterface;

class MyChatBot extends RAG
{
    ...

    protected function vectorStore(): VectorStoreInterface
    {
        return new MemoryVectorStore();
    }
}

Archivo

El almacenamiento en archivos podría ser útil para casos de uso de bajo volumen o para entornos locales y de pruebas. Los documentos incrustados se almacenarán en el sistema de archivos y se procesarán durante la búsqueda por similitud.

FileVectorStore usa generadores de PHP para leer los documentos incrustados desde el sistema de archivos. Nunca mantendrá más de topK elementos en memoria mientras itera muy rápido. Puedes almacenar miles de documentos en tu sistema de archivos local, solo teniendo en cuenta el tiempo máximo que puedes aceptar para realizar la búsqueda por similitud.

También puedes usar este componente para liberar agentes con algo de conocimiento ya incorporado en un archivo.

PHPVector

Adaptador PHPVector sobre ezimuel/phpvector. Es una base de datos vectorial pura en PHP que implementa HNSW (Hierarchical Navigable Small World) para búsqueda aproximada de vecinos más cercanos y BM25 para recuperación de texto completo. Ambos motores pueden combinarse en una sola búsqueda híbrida canalización.

Puedes instalar el componente con composer:

Úsalo en un contexto RAG:

MariaDB

MariaDB admite el tipo de columna VECTOR a partir de la versión 11.7. Para que este componente funcione, necesitas crear la tabla para almacenar los documentos y los vectores relacionados. Aquí tienes el script SQL que puedes usar para hacerlo:

Úsalo en un contexto RAG:

Pinecone

Pinecone facilita proporcionar memoria a largo plazo para aplicaciones de IA de alto rendimiento. Es una base de datos vectorial administrada y nativa de la nube, con una API sencilla y sin problemas de infraestructura. Pinecone ofrece resultados de consulta frescos y filtrados con baja latencia a la escala de miles de millones de vectores.

Así es como usar Pinecone en tu agente:

Pinecone también admite búsqueda híbrida que te permite filtrar documentos no solo por similitud con el prompt de entrada, sino también por los metadatos almacenados junto con tus documentos. Puedes pasar filtros adicionales a tu instancia de agente para que Pinecone los tenga en cuenta al filtrar documentos.

Puedes añadir el addVectorStoreFilters() método a la clase de tu agente para pasar filtros en tiempo de ejecución:

Cuando ejecutes tu agente, puedes pasar filtros sobre la marcha:

Echa un vistazo a la documentación oficial de Pinecone para entender mejor los filtros de metadatos: https://docs.pinecone.io/reference/api/2025-04/data-plane/query#body-filter

Weaviate

Elasticsearch

La base de datos vectorial de código abierto de Elasticsearch ofrece una forma eficiente de crear, almacenar y buscar embeddings vectoriales. Para usar Elasticsearch como almacén vectorial en la implementación de tus agentes, tienes que importar el cliente oficial:

Así es como crear un RAG que use Elasticsearch:

Elasticsearch también admite búsqueda híbrida. Puedes pasar filtros adicionales a tu instancia de agente para que Elasticsearch los tenga en cuenta al filtrar documentos.

Puedes añadir el addVectorStoreFilters() método a la clase de tu agente para pasar filtros en tiempo de ejecución:

Pasar filtros dinámicamente en tiempo de ejecución:

OpenSearch

OpenSearch es la alternativa de código abierto pura a Elasticsearch. Para usar OpenSearch en tus agentes necesitas instalar su cliente oficial:

Una vez que tengas el cliente oficial instalado en tu aplicación, puedes devolver una instancia de OpenSearchVectorStore en tu agente RAG:

Typesense

Typesense es una alternativa de código abierto a las opciones anteriores. Para usar Typesense en tus agentes necesitas instalar su cliente oficial:

Una vez que tengas el cliente oficial instalado en tu aplicación, puedes devolver una instancia de TypesenseVectorStore en tu agente RAG:

Qdrant

Qdrant es una base de datos vectorial de código abierto con sólidas capacidades de búsqueda por similitud. Para usar Qdrant en tus agentes tienes que proporcionar una collectionUrl. Esto significa que primero necesitarás crear una colección en Qdrant con sus atributos como: nombre, algoritmo de búsqueda por similitud, dimensión del vector, etc.

Una vez que tengas la URL de la colección, puedes adjuntar la QdrantVectorStore instancia a tu agente.

ChromaDB

Chroma es una base de datos de código abierto diseñada para ser una fuente de datos para aplicaciones de IA. Para usar ChromaDB en tus agentes tienes que proporcionar el nombre de una colección interna donde quieras almacenar los embeddings.

Una vez que hayas creado la colección en tu instancia de Chroma, puedes adjuntar la ChromaVectorStore instancia al agente:

Meilisearch

Meilisearch es un motor de búsqueda híbrida, pero la implementación de Neuron lo utiliza exclusivamente como un almacén vectorial para embeddings y búsqueda por similitud.

El indexUid debe ser el identificador de un índice de Meilisearch que hayas creado y configurado. Asegúrate de que este índice defina un campo vectorial cuya dimensión coincida con el tamaño del embedding producido por el generador de embeddings que estás usando. El generador de embeddings valor (por ejemplo, predeterminado) debe corresponder a un generador de embeddings con nombre configurado en tu configuración de Neuron para que los vectores almacenados y la configuración del índice permanezcan alineados. Añade el componente a tu RAG:

Implementar almacenes vectoriales personalizados

Si quieres crear un nuevo proveedor, tienes que implementar la VectorStoreInterface interfaz:

Hay dos métodos diferentes para añadir un solo documento o una colección de documentos porque muchas bases de datos proporcionan APIs distintas para estos casos de uso. Si la base de datos con la que quieres interactuar no maneja estas solicitudes de forma diferente, puedes implementar addDocument() como marcador de posición.

similaritySearch debe devolver documentos con una puntuación de similitud, no una distancia de similitud. Si la base de datos subyacente devuelve una distancia, puedes convertirla en una puntuación usando la clase de utilidad VectorSimilarity:

Esta es la plantilla básica para una nueva implementación de proveedor de IA.

Después de crear tu propia implementación, puedes usarla en el agente:

Última actualización