语义搜索实现:2026 年完整开发者指南
通过实际示例和生产模式掌握语义搜索实现
语义搜索实现:2026 年完整开发者指南
通过实际示例和生产模式掌握语义搜索实现
语义搜索实现完全指南(2026):分块→嵌入→向量库存储→近邻检索→重排的完整管线,含真实代码、向量库选型(Chroma/Qdrant/pgvector/Pinecone)、分块/混合检索/重排/元数据过滤等质量杠杆。RAG 的检索底座。
语义搜索实现:2026 年完整开发者指南
语义搜索根据含义而非精确关键词查找结果。你将文本转换为嵌入(稠密向量),存储在向量索引中,查询时嵌入查询并检索最近的向量。它是 RAG 的检索部分,也是“查找关于取消订阅的文档”能匹配到标题为“如何终止你的计划”页面的原因。
管线
python
pip install openai
from openai import OpenAI
client = OpenAI()def embed(texts):
r = client.embeddings.create(model="text-embedding-3-small", input=texts)
return [d.embedding for d in r.data]
docs = ["How to cancel your subscription", "Resetting your password", "Billing FAQ"]
doc_vecs = embed(docs)
import numpy as np
def search(query, k=2):
q = np.array(embed([query])[0])
sims = [float(np.dot(q, v) / (np.linalg.norm(q) * np.linalg.norm(v))) for v in doc_vecs]
return sorted(zip(docs, sims), key=lambda x: -x[1])[:k]
print(search("end my plan")) # → "How to cancel your subscription" 排名第一
numpy 版本仅用于说明——生产环境中应使用向量数据库,以便在大规模下保持搜索速度。
选择向量存储
质量杠杆
整个流程是 RAG 的检索阶段——要构建完整管线,请参见 LangChain vs LlamaIndex for RAG 和 LlamaIndex 生产级 RAG。
常见问题
嵌入 vs 关键词搜索? 关键词匹配精确术语;嵌入匹配含义。混合搜索两者兼用。 选择哪个嵌入模型? 当前通用模型即可开始;更大的收益来自分块和重排。 检索多少结果? 检索一个较大的 top-k(例如 20),重排,然后将最佳的几个传递给 LLM。
总结
语义搜索 = 嵌入、存储、通过近邻检索。正确分块,添加混合搜索和重排以提高精度,选择适合规模的向量存储。它是每个 RAG 系统的骨干。
*最后更新:2026 年 6 月。请根据 OpenAI 文档验证嵌入 API。*
相关工具
相关教程
从零构建一个压缩检索上下文以适应LLM窗口的RAG系统
无需额外基础设施,为 PostgreSQL 数据库添加语义搜索以支持 RAG
为你的AI应用选择哪个向量数据库?四大选项的性能基准、定价和用例分析
从零构建结合向量与关键词搜索、实现最大召回率的RAG系统
通过实际示例和生产模式掌握 OpenAI 函数调用
从零构建用于多跳推理的知识图谱遍历RAG系统