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

向量数据库

Neuron 为您提供可直接使用的组件,用于将您的智能体连接到向量数据库。

我们目前为以下向量存储提供第一方支持:

内存

这是一个易失性向量存储的实现,它会在当前会话中将你的嵌入保存在机器内存中。当你不需要长期存储生成的嵌入,只需在当前交互会话期间(或用于本地使用)保存它们时,它很有用。

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();
    }
}

文件

文件存储适用于低流量使用场景或本地和预发布环境。嵌入文档将存储在文件系统中,并在相似度搜索期间进行处理。

FileVectorStore 使用 PHP 生成器从文件系统中读取嵌入文档。它在迭代过程中绝不会在内存中保留超过 topK 个项目,并且迭代速度非常快。你可以在本地文件系统中存储数千个文档,只需关注你可接受的执行相似度搜索的最长时间。

你也可以使用这个组件来发布已经在文件中预先包含部分知识的智能体。

PHPVector

基于 ezimuel/phpvector。它是一个纯 PHP 向量数据库,实现了 HNSW (分层可导航小世界)用于近似最近邻搜索,以及 BM25 用于全文检索。两个引擎都可以组合成一个 混合搜索 流水线。

你可以使用 composer 安装该组件:

在 RAG 场景中使用它:

MariaDB

MariaDB 从 11.7 版本开始支持 VECTOR 列类型。要使此组件正常工作,你需要创建用于存储文档及其相关向量的表。下面是你可以使用的 SQL 脚本:

在 RAG 场景中使用它:

Pinecone

Pinecone 使为高性能 AI 应用提供长期记忆变得简单。它是一个托管的、云原生的向量数据库,API 简洁且无需操心基础设施。Pinecone 以低延迟、在数十亿向量的规模下提供最新的、经过筛选的查询结果。

以下是在你的智能体中使用 Pinecone 的方法:

Pinecone 也支持混合搜索,这使你不仅可以根据与输入提示的相似度来筛选文档,还可以根据与你文档一起存储的元数据来筛选。你可以向你的智能体实例传递额外的过滤条件,这样 Pinecone 在筛选文档时就会将它们纳入考虑。

你可以添加 addVectorStoreFilters() 方法到你的智能体类中,以便在运行时传递过滤条件:

当你运行智能体时,可以动态传递过滤条件:

请查看 Pinecone 官方文档,以更好地理解元数据过滤条件: https://docs.pinecone.io/reference/api/2025-04/data-plane/query#body-filter

Weaviate

Elasticsearch

Elasticsearch 的开源向量数据库提供了一种高效的方式来创建、存储和搜索向量嵌入。要在你的智能体实现中使用 Elasticsearch 作为向量存储,你需要导入官方客户端:

以下是创建使用 Elasticsearch 的 RAG 的方法:

Elasticsearch 也支持混合搜索。你可以向智能体实例传递额外的过滤条件,这样 Elasticsearch 在筛选文档时就会将它们纳入考虑。

你可以添加 addVectorStoreFilters() 方法到你的智能体类中,以便在运行时传递过滤条件:

在运行时动态传递过滤条件:

OpenSearch

OpenSearch 是 Elasticsearch 的纯开源替代方案。要在你的智能体中使用 OpenSearch,你需要安装其官方客户端:

一旦你在应用中安装了官方客户端,就可以返回以下实例: OpenSearchVectorStore 在你的 RAG 智能体中:

Typesense

Typesense 是上述选项的开源替代方案。要在你的智能体中使用 Typesense,你需要安装其官方客户端:

一旦你在应用中安装了官方客户端,就可以在你的 RAG 智能体中返回 TypesenseVectorStore 的实例:

Qdrant

Qdrant 是一个具有强大相似度搜索能力的开源向量数据库。要在你的智能体中使用 Qdrant,你必须提供 collectionUrl。这意味着你首先需要在 Qdrant 上创建一个集合,并设置其属性,如:名称、相似度搜索算法、向量维度等。

一旦你有了集合 URL,就可以将 QdrantVectorStore 实例附加到你的智能体。

ChromaDB

Chroma 是一个为 AI 应用数据源而设计的开源数据库。要在你的智能体中使用 ChromaDB,你必须提供要存储嵌入的内部集合名称。

一旦你在 Chroma 实例上创建了集合,就可以将 ChromaVectorStore 实例附加到智能体:

Meilisearch

Meilisearch 是一个混合搜索引擎,但 Neuron 的实现将其专门用作嵌入和相似度搜索的向量存储。

indexUid 参数应为你已创建并配置的 Meilisearch 索引标识符。请确保该索引定义了一个向量字段,其维度与所使用的嵌入器生成的嵌入大小相匹配。 嵌入器 值(例如, 默认)必须对应于你在 Neuron 设置中配置的命名嵌入器,以便存储的向量与索引配置保持一致。将该组件添加到你的 RAG 中:

实现自定义向量存储

如果你想创建一个新的提供者,你需要实现 VectorStoreInterface 接口:

由于许多数据库针对这些用例提供了不同的 API,因此添加单个文档或文档集合有两个不同的方法。如果你要交互的数据库并没有区别处理这些请求,你可以实现 addDocument() 作为占位符。

similaritySearch 应返回带有相似度分数而不是相似度距离的文档。如果底层数据库返回的是距离,你可以使用工具类将其转换为分数 VectorSimilarity:

这是一个新的 AI 提供者实现的基本模板。

创建你自己的实现后,就可以在智能体中使用它:

最后更新于