检索器组件深入学习与使用技巧 VectorStoreRetriever 检索器

article/2025/6/24 17:11:00

1. VectorStoreRetriever 检索器

VectorStoreRetrieverBaseRetriever 的子类,这是一个专门针对向量数据库的基础检索器,在 VectorStoreRetriever 的内部实现了 _get_relevant_documents() 方法,还定义了单独的属性:

vectorstore:检索器归属的向量数据库。
search_type:搜索类型。
search_kwargs:搜索参数。
这些参数均来源于 as_retriever() 或者在实例化类时传递的参数,由于该组件是一个 Runnable 可运行组件,所以可以使用 .configurable_fields() 来修改类内部的参数。
资料推荐

  • 💡大模型中转API推荐
  • ✨中转使用教程
  • ✨模型优惠查询

例如实现在运行时传递 search_typesearch_kwargs,修改成 mmr 方法进行检索,并且返回 4 条数据, 代码示例:

import dotenv
import weaviate
from langchain_core.runnables import ConfigurableField
from langchain_openai import OpenAIEmbeddings
from langchain_weaviate import WeaviateVectorStore
from weaviate.auth import AuthApiKeydotenv.load_dotenv()# 1.构建向量数据库
db = WeaviateVectorStore(client=weaviate.connect_to_wcs(cluster_url="https://eftofnujtxqcsa0sn272jw.c0.us-west3.gcp.weaviate.cloud",auth_credentials=AuthApiKey("21pzYy0orl2dxH9xCoZG1O2b0euDeKJNEbB0"),),index_name="DatasetDemo",text_key="text",embedding=OpenAIEmbeddings(model="text-embedding-3-small"),
)# 2.转换检索器
retriever = db.as_retriever(search_type="similarity_score_threshold",search_kwargs={"k": 10, "score_threshold": 0.5},
).configurable_fields(search_type=ConfigurableField(id="search_type"),search_kwargs=ConfigurableField(id="search_kwargs"),
)# 3.执行基础相似性搜索,并返回4条数据
similarity_documents = retriever.with_config(configurable={"search_type": "mmr","search_kwargs": {"k": 10},
}).invoke("关于应用配置的接口有哪些?")
print("相似性搜索: ", similarity_documents)
print("内容长度:", len(similarity_documents))

输出内容:

相似性搜索:  [...]
内容长度: 10

除了使用 .with_config() 传递运行时配置,也可以在执行 .invoke() 函数时传递 config,效果是一模一样的。

similarity_documents = retriever.invoke("关于应用配置的接口有哪些?", config={"configurable": {"search_type": "mmr","search_kwargs": {"k": 8},}}
)

LCEL 表达式构建的链应用中,.with_config() 可以通过链一起传递,或者是调用 .invoke() 函数是传递 config+configurable 属性完成对配置信息的替换,所以在 RAG 应用开发中,可以对检索器配置好相应的选项,如果需要特定信息时传递运行配置即可,否则会运行默认配置信息。

为 聊天机器人架构运行流程图 添加上 动态配置 选项,更新后如下:在这里插入图片描述
除此之外,Runnable 可运行组件的其他配置也可以轻松配置使用:

使用 .configurable_alternatives() 来实现对 向量数据库检索器 的替换;
使用 .with_retry() 来实现对出现错误的重试;
使用 .with_fallbacks() 来实现对出现错误时的回退;
使用 .with_listeners() 来实现对执行生命周期的监听;
使用 .bind() 来实现动态传递绑定时参数(不过对于 weaviate 向量数据库来说,目前没有效果)。
.bind() 函数会将相应的数据传递给 .invoke()kwargs 参数,但是在 weaviateinvoke() 中并没有用到 kwargs 参数,所以 .bind() 函数不会起到效果,要想传递搜索参数给 weaviate.invoke() 方法只能通过 search_kwargs 进行传递。

核心代码:

def _get_relevant_documents(self, query: str, *, run_manager: CallbackManagerForRetrieverRun
) -> List[Document]:if self.search_type == "similarity":docs = self.vectorstore.similarity_search(query, **self.search_kwargs)elif self.search_type == "similarity_score_threshold":docs_and_similarities = (self.vectorstore.similarity_search_with_relevance_scores(query, **self.search_kwargs))docs = [doc for doc, _ in docs_and_similarities]elif self.search_type == "mmr":docs = self.vectorstore.max_marginal_relevance_search(query, **self.search_kwargs)else:raise ValueError(f"search_type of {self.search_type} not allowed.")return docs

资料推荐

  • 💡大模型中转API推荐
  • ✨中转使用教程
  • ✨模型优惠查询

http://www.hkcw.cn/article/ZvUUYfbbnn.shtml

相关文章

深度学习pycharm debug

深度学习中,Debug 是定位并解决代码逻辑错误(如张量维度不匹配)、训练异常(如 Loss 波动)、数据问题(如标签错误)的关键手段,通过打印维度、可视化梯度等方法确保模型正常运行、优化…

女研究生二次入伍再续海军梦 逐梦军营续写辉煌

女研究生二次入伍再续海军梦!在2025年春季入伍的新兵中,有一名特殊的“老兵”。她曾在海军某部服役两年,退伍后重返校园继续学业。如今已是研究生的她再次穿上海军军装,来到南部战区海军某训练基地,又一次成为了海军战士,踏上了二次入伍的军旅生涯。张玉玺于2020年9月第一…

尾号7个0的手机号拍出61.2万元 独特号码高价成交

一个尾号为七个零的手机号码使用权于6月1日以25万元底价起拍,共有13人参与竞拍。最终该号码以61.2万元成交。公告显示,截至4月23日,该号码无欠费,余额约9.14元,已办理4G全国流量王8元套餐,未绑定宽带,过户无预存话费要求,完成过户即可转网。目前,该号码使用权已被天津…

中国单方面免签“朋友圈”扩大 拉美五国加入免签行列

中国单方面免签“朋友圈”扩大 拉美五国加入免签行列。从6月1日起,巴西、阿根廷、智利、秘鲁、乌拉圭五个国家的持普通护照人员可以享受免签政策。这一政策试行期为2025年6月1日至2026年5月31日,期间这些国家的公民来华经商、旅游观光、探亲访友、交流访问或过境不超过30天,…

贝尔伯克当选联大主席 大V解读 女性力量再添一笔

6月2日,德国前外长贝尔博克当选为第80届联合国大会主席,成为第五位担任此职位的女性。联合国大会以167票赞成通过了安娜莱娜贝尔博克出任下一任主席的决定。贝尔博克对此表示非常感激,并承诺将通过“基于信任的对话”为大家服务。她宣称自己的目标是减少冗余、提高透明度,并…

上海游客“表扬帖”走红网络 感谢信点赞厦门辅警

上海游客“表扬帖”走红网络 感谢信点赞厦门辅警!一篇饱含深情的表扬贴在小红书上迅速走红,网友查女士诚挚地感谢了一位帮助她的厦门辅警。厦门双子塔上灯光轮滚播放着连续七届获选文明城市的信息,这是每一位厦门人共同努力、团结一致的结果。5月25日中午11点多,上海游客查…

如何评估 RAG 的分块Chunking策略

如何评估 RAG 的分块策略 我对 RAG(检索增强生成模型)进行了深入研究,深知分块在任何 RAG 流水线中都至关重要。 我接触过的许多人坚信更好的模型能够提升 RAG 的性能。有些人则对向量数据库寄予厚望。即便那些认同分块重要性的人&#xff…

贪心算法应用:顶点覆盖问题详解

贪心算法应用:顶点覆盖问题详解 贪心算法是解决顶点覆盖问题的经典方法之一。下面我将从基础概念到高级优化,全面详细地讲解顶点覆盖问题及其贪心算法解决方案。 一、顶点覆盖问题基础 1. 问题定义 顶点覆盖问题(Vertex Cover Problem&am…

代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、栈与队列总结

150. 逆波兰表达式求值--后缀表达式 力扣题目链接(opens new window) 根据 逆波兰表示法,求表达式的值。 有效的运算符包括 , - , * , / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给…

女童玩的气球突然爆炸 静电引发惊魂一刻

一位江苏宝妈在六一儿童节前发布了一段视频,提醒家长们不要给孩子买氢气球玩。她描述了自己孩子遇到的一次危险情况:气球突然爆炸,孩子的后脑勺头发被烧焦了一层,手臂上的汗毛也被烧掉了。事发时,这位宝妈正在给孩子喂食鸡腿,突然听到“嘭”的一声,气球在孩子身后爆裂,…

Ubuntu安装CH340驱动教程

Ubuntu22.04安装CH340驱动 3.1 用lsusb查看USB 插上CH340之前 插上CH340之后 输出中包含ID 1a86:7523 QinHeng Electronics CH340 serial converter的信息,这表明CH340设备已经被系统识别。 3.2 查看USB转串口 ls -l /dev/ttyUSB0/dev下没有该设备节点。 用dme…

新人雨中骑“鸡动车”去结婚 创意婚礼引关注

6月1日,在合肥渡仙桥路上,一对新人以独特的方式前往婚礼现场。他们没有选择豪华婚车,甚至没有开车,而是骑着小鸡造型的两轮电动车赶往婚礼现场。这对新人表示,看到这种小鸡造型的电动车觉得很漂亮,便决定用它作为婚车。视频中,这支婚车车队虽然数量不多,但在路上格外显…

上海迪士尼打架事件后续 因拍照引发冲突

5月31日,有网友发布视频称,在上海迪士尼乐园内一对情侣和一家三口发生了冲突。视频中可以看到双方在现场扭打,周围游客纷纷上前劝阻。6月1日,当地相关部门透露,该事件发生在5月31日下午,在迪士尼疯狂动物城的一处拍照打卡点,双方因拍照问题发生争执,随后演变成肢体冲突…

【Python连接数据库基础 02】SQLAlchemy核心实战:SQL表达式构建与执行完全指南

【Python连接数据库基础 02】SQLAlchemy核心实战:SQL表达式构建与执行完全指南 关键词:SQLAlchemy Core、SQL表达式、数据库查询、Python ORM、表达式语言、数据库操作、查询构建、SQLAlchemy教程 摘要:本文深入讲解SQLAlchemy Core的核心功能…

台湾一大学生暗网贩毒被捕 涉案金额超7亿

美国联邦调查局近日破获了暗网毒品交易平台“隐身市场”,该平台的经营者“法老”被发现是24岁的台湾大学资管系学生林睿庠。林睿庠通过贩毒积累了大量财富,三年多时间里非法所得超过1亿美元。林睿庠于2024年5月18日在美国被捕,并面临四项罪名指控,一旦定罪将面临至少终身监…

数据库系统概论(十四)详细讲解SQL中空值的处理

数据库系统概论(十四)详细讲解SQL中空值的处理 前言一、什么是空值?二、空值是怎么产生的?1. 插入数据时主动留空2. 更新数据时设置为空3. 外连接查询时自然出现 三、如何判断空值?例子:查“漏填数据的学生…

我国代表反驳对华无端指责:无中生有 颠倒黑白 贼喊捉贼

我国代表反驳对华无端指责。5月31日,参加第22届香格里拉对话会的中国代表团团长、中国人民解放军国防大学副校长兼教育长胡钢锋出席《亚太地区海事安全合作》特别论坛,并阐述中方观点。他首先反驳了当天上午大会发言中涉及中方的内容。他表示,我们不接受对中方的无端指责,有…

喊话万科,74岁的王石难有“真还传” 万科面临转型挑战

喊话万科,74岁的王石难有“真还传” 万科面临转型挑战。对于如今的万科来说,他们需要的是“化腐朽为神奇”的钞能力,而不是“剪刀手”。近期地产圈和网络上热议的话题是,如果王石重新回归万科,是否会有奇迹发生。5月27日,万科创始人王石在朋友圈发布了一则长文,表示正在…

国际组织:美债务飙升不仅危及自身更可能引发全球债券市场危机

国际组织:美债务飙升不仅危及自身。5月31日报道,国际金融协会最近的一份报告警告,美国债务飙升的影响不仅限于国内经济,更可能引发全球债券市场危机。报告显示,一些国家的借贷成本往往与美国国债同步变动,这意味着美国国债的波动将对其它债务产生连锁反应。报告写道,“由…

一句古语看懂中方如何应对抹黑!

一句古语看懂中方如何应对抹黑。第22届香格里拉对话会闭幕了这期间,谭主在香会现场看到了美菲防长的无理挑衅甚至连中国记者都变成了菲防长口中的“特工”这说明他们急了,为什么?一句古语看懂中方如何应对抹黑责任编辑:0882