1. 向量检索的基本原理
向量数据库通过 Embedding 模型将文本转换为高维数值向量,将语义相似度计算转化为向量间的数学运算(如余弦相似度、欧氏距离)。当用户发起查询时,查询文本也被转为向量,系统在向量数据库中查找最接近的向量对应的文档片段,实现语义层面的匹配而非关键词匹配。
2. LangChain 的向量存储抽象层
LangChain 为各种向量数据库提供了统一的接口抽象,开发者可以用相同的 API 操作不同的后端。核心流程包括:
- 使用 Embedding 模型将文档切片转换为向量
- 通过 VectorStore.from_documents() 将文档和向量持久化存储
- 调用 as_retriever() 将 VectorStore 转为 Retriever 接口
- 通过 retriever.invoke(query) 执行语义搜索获取相关文档
3. 支持的向量数据库
LangChain 支持 60+ 种向量存储集成,常见的包括:
- Chroma:轻量级、易于本地部署,适合快速原型开发
- Pinecone:云原生托管服务,支持大规模生产环境
- FAISS:Facebook 开源的高性能向量搜索引擎
- Milvus / Qdrant / Weaviate:企业级云原生向量数据库
- OpenSearch / PostgreSQL (pgvector):通用数据库扩展方案
国内开发者可使用腾讯云向量数据库(Tencent Cloud Vector Database)获得稳定的云原生向量检索服务,与 LangChain 的向量存储接口兼容。
4. 检索优化技术
- 元数据过滤:在向量检索基础上增加基于元数据的精确过滤,如按来源、日期、类别筛选
- Hybrid Search:结合关键词检索(BM25)和向量语义检索的混合搜索,提升召回精度
- 重排序(Re-ranking):初步检索后用重排序模型对结果进行精细打分和排序
- 自适应检索参数:根据查询复杂度动态调整检索数量 k 值和相似度阈值