Vector Search Patterns 是一套用于实现语义相似度检索的实践模式集合,主要服务于检索增强生成(RAG)与智能查询场景。资料以代码示例和对照表的形式,展示了从嵌入生成到检索落地的完整链路。
用途 该模式集用于为应用加入语义相似度搜索能力,即根据含义而非关键词匹配来检索内容,并可作为 RAG 流程中的检索环节。
主要能力
- 嵌入生成:给出通过 HTTP 异步调用 OpenAI 嵌入接口(默认模型 text-embedding-3-small)的 Python 示例,返回文本对应的向量列表。
- 分块策略:以表格形式列出五种策略及其适用场景与块大小——固定大小(简单文档,500-1000 tokens)、基于句子(文章、随笔,3-5 句)、基于段落(结构化文档,自然断点)、递归(混合内容,层级切分)、语义(研究论文,主题边界)。并提供一个按句子切分、带重叠的 chunk_text 函数示例。
- 向量存储:分别给出三种方案的示例。ChromaDB 用于开发或小规模场景,展示持久化客户端、集合创建(余弦距离)、写入与带元数据过滤的查询。pgvector 用于生产环境或 PostgreSQL,展示启用扩展、建表(vector(1536) 维度)、创建 IVFFlat 与 HNSW 索引、相似度查询 SQL,以及 asyncpg 异步查询封装。FAISS 用于高性能本地检索,展示内积索引构建、L2 归一化、添加向量与搜索。
- 混合检索:给出向量检索与全文检索结合的 SQL 示例,通过 FULL OUTER JOIN 合并两路结果,并按 0.7 与 0.3 的权重计算综合得分。
- RAG 流程:给出 rag_query 示例,依次完成问题嵌入、检索相关分块、拼接上下文、调用 LLM 生成带引用的回答。
- 索引选型指南:按数据规模给出推荐索引与召回率、速度对照——小于 1 万用 Flat(精确,100% 召回);1 万至 100 万用 HNSW(95-99%);100 万至 1 亿用 IVFFlat(90-95%);超过 1 亿用 IVF + PQ(80-90%,最快)。
- 反模式提示:列出应避免的做法,包括直接嵌入整篇文档(应先分块)、不做元数据过滤、忽略嵌入模型 token 上限、对所有内容使用固定分块、不做重排序(生产环境可用交叉编码器重排)、只存向量不存原文。
使用方式 资料以可复制的代码片段和 SQL 语句呈现,开发者可按需选用对应向量库的实现,替换其中的 API 密钥、连接串与维度参数后集成到自己的项目中。
适用场景 语义搜索、问答系统、文档检索、RAG 应用,以及需要在 PostgreSQL 中直接做向量检索或需要本地高性能检索的场景。
限制 资料未提供具体的安装命令、依赖版本、性能基准数据、收费信息或平台支持范围;示例中的模型名称、维度(1536)与权重(0.7/0.3)为示例值,实际使用需按自身环境调整。