LangChain VectorStore 的几种检索方式
516 字
3 分钟
LangChain VectorStore 的几种检索方式
👉 最常用,按向量相似度排序,返回最接近的文档。
-
参数:
-
query: 查询文本 -
k: 返回的文档数
-
-
作用:找出“最相似”的内容,适合大多数问答场景。
-
缺点:不会考虑“查询和文档的匹配相关性权重”,只看向量。
docs = vectorstore.similarity_search("拜登的气候政策", k=3)2. similarity_search_with_score
👉 和 similarity_search 一样,但会返回 相似度分数。
-
作用:
- 可根据分数过滤低相关性文档;
- 适合需要“阈值控制”的任务(比如只要相似度 >0.8 的结果)。
docs = vectorstore.similarity_search_with_score("气候变化", k=3)for doc, score in docs: print(doc.page_content, score)3. max_marginal_relevance_search (MMR)
👉 最大边际相关性检索,在相似度的基础上增加“多样性”。
-
作用:
- 避免检索结果过于重复;
- 适合用户需要“覆盖不同角度”的问题,比如“中美关系”时返回中方和美方新闻,而不是全是中方的。
-
机制:
- 在相似度高的候选中,挑一部分相似但彼此差异大的文档。
docs = vectorstore.max_marginal_relevance_search("国际气候合作", k=5, fetch_k=20)4. similarity_search_by_vector
👉 如果你 自己已经有了 query 的向量(比如外部 embedding 模型算的),可以直接用这个接口。
- 作用:绕过 LangChain 的 embedding,直接用外部向量进行搜索。
- 适合场景:比如你有多模态输入(图像、音频 → embedding),但想在同一个 Milvus 里检索文本。
embedding_vector = [0.12, -0.33, 0.88, ...] # 自己算的docs = vectorstore.similarity_search_by_vector(embedding_vector, k=3)5. as_retriever
👉 把向量库封装成一个 Retriever,供 RAG / QA Chain 使用。
-
优势:
- 统一接口,可以随意切换 FAISS、Milvus、PGVector;
- 可以配合
RetrievalQA、ConversationalRetrievalChain 等。
-
检索模式可配置(例如 similarity / MMR):
retriever = vectorstore.as_retriever(search_type="mmr", search_kwargs={"k": 5})docs = retriever.get_relevant_documents("拜登在联合国说了什么")📝 总结对比
| 方法 | 功能 | 适合场景 |
|---|---|---|
similarity_search | 按相似度取Top-K | 默认、通用 |
similarity_search_with_score | 相似度+分数 | 需要阈值过滤 |
max_marginal_relevance_search | 相似+多样性 | 避免结果重复、覆盖不同角度 |
similarity_search_by_vector | 直接用外部向量查 | 多模态 / 自定义 embedding |
as_retriever | 转换成Retriever | RAG、QA链集成 |
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LangChain VectorStore 的几种检索方式
https://guoxin.wiki/posts/langchain-vectorstore-search/相关文章智能推荐
1
LangChain 的 Tools 体系:给 LLM 装上手和脚
AI 与 AgentTool 的接口定义、结构化工具(StructuredTool)、工具集与工具包的组织方式,以及 Agent 选择工具的原理。
2
LangChain PromptTemplate 详解:把 Prompt 当代码管理
AI 与 Agent用模板把 Prompt 从字符串常量升级为可复用、可组合、可结构化输出的模块:占位符、FewShot、ChatPromptTemplate 与输出解析器的配合。
3
LangChain Agent 入门:LLM + 工具集 + 推理策略
AI 与 AgentAgent 的组成部分、Zero-shot / ReAct / Plan-and-Act 策略对比,以及工具设计、内存、token 控制方面的注意事项。
4
Windows 11 上封锁 Claude Code 出网:防火墙 + DNS + hosts 三层实战
运维与工具用防火墙规则、DNS 重定向和 hosts 三层手段封锁 Claude Code 的出网流量,并给出一套可验证、可回滚的完整脚本与自检流程。
5
React 学习 Day1:基础语法与整体框架(含 JS 关键基础)
前端建立对 React 的整体认识,并补齐编写 React 所必需的 JavaScript 语法基础:组件化、Props/State、JSX 与常用概念。
随机文章随机推荐














