PrivateGPT 中的向量存储组件负责存储和检索文档块的向量嵌入。它通过实现高效的相似性搜索,在回答用户查询时找到相关的文档块,从而成为检索增强生成(RAG)管道的关键部分。
图 1:系统架构中的向量存储组件
来源:private_gpt/components/vector_store/vector_store_component.py
向量存储组件主要有两大功能
PrivateGPT 支持多种向量存储后端,每种后端具有不同的特性和用例
| 向量存储 | 描述 | 配置键 | 额外包 |
|---|---|---|---|
| Qdrant | 默认向量存储,针对扩展过滤进行了优化 | qdrant | vector-stores-qdrant |
| Chroma | 嵌入式向量数据库 | chroma | vector-stores-chroma |
| PostgreSQL/pgvector | 带有向量扩展的 PostgreSQL | postgres | vector-stores-postgres |
| Milvus | 可扩展向量数据库 | milvus | vector-stores-milvus |
| ClickHouse | 支持向量的列式 DBMS | clickhouse | vector-stores-clickhouse |
来源:private_gpt/components/vector_store/vector_store_component.py40-195 fern/docs/pages/manual/vectordb.mdx1-187
图 2:向量存储组件类结构
来源:private_gpt/components/vector_store/vector_store_component.py32-218
向量存储组件被实现为一个单例类,它根据配置设置初始化相应的向量存储。初始化过程根据 vectorstore.database 设置选择向量存储实现,并根据提供的参数进行配置。
向量存储组件通过 settings.yaml 文件进行配置。主要的配置是 vectorstore.database 属性,它决定了使用哪种向量存储实现
每个向量存储都有自己的配置选项,这些选项在设置文件中各自的部分下指定。例如,Qdrant 配置
来源:fern/docs/pages/manual/vectordb.mdx11-168
图 3:向量检索流程
来源:private_gpt/components/vector_store/vector_store_component.py197-213
该组件提供一个 get_retriever 方法,用于创建针对特定向量存储配置的 VectorIndexRetriever。该检索器支持
context_filter 参数按文档 ID 进行过滤similarity_top_k 配置返回结果的数量doc_ids,而其他存储使用过滤器)来源:private_gpt/components/vector_store/vector_store_component.py197-213
要使用特定的向量存储,需要安装相应的额外包。例如,要使用 Qdrant
如果未安装所需的依赖项,组件将引发相应的 ImportError,并附带如何安装所需包的说明。
来源:private_gpt/components/vector_store/vector_store_component.py43-105 fern/docs/pages/installation/concepts.mdx22-67
向量存储组件与以下组件紧密协作:
来源:private_gpt/components/vector_store/vector_store_component.py
向量存储组件实现了一个 close 方法,用于在关闭时清理资源
这确保了应用程序终止时数据库连接的正确清理。
来源:private_gpt/components/vector_store/vector_store_component.py215-217