尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
agno 知识库如何配置混合搜索并用 Cohere reranker 做两阶段重排提升检索质量?
agno 知识库如何配置混合搜索并用 Cohere reranker 做两阶段重排提升检索质量【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno如果你用 agno 的 Knowledge 组件给 Agent 接入文档检索会遇到两类典型问题纯向量搜索在关键词精确匹配场景下容易漏掉相关分片纯关键词搜索又抓不住语义相近但用词不同的内容另外首轮召回的候选集里常混入不相关的分片直接影响最终回答质量。agno 的 knowledge cookbook 给出的操作路径是先用SearchType.hybrid向量 关键词做第一阶段召回再挂一个CohereReranker对候选结果做第二阶段重排。本文按 building blocks 目录 中的前置要求把这条完整路径从环境准备、配置、运行到结果判断走一遍。准备条件building blocks 的 README 明确列出了三项前置条件缺一不可启动 Qdrant 向量数据库运行./cookbook/scripts/run_qdrant.sh。该脚本见 run_qdrant.sh的实际内容是docker run -d \ --name qdrant \ -p 6333:6333 \ -p 6334:6334 \ -v $(pwd)/tmp/qdrant_storage:/qdrant/storage:z \ qdrant/qdrant注意两个副作用容器名固定为qdrant重复执行前需要自行处理同名容器数据持久化到仓库目录下的tmp/qdrant_storage。设置OPENAI_API_KEY环境变量示例中的 embedder 和 Agent 模型都用 OpenAIexport OPENAI_API_KEYyour-key如果要跑 reranking 示例额外设置COHERE_API_KEY环境变量。第一步确认三种搜索类型选定 hybrid先理解 hybrid 搜索在 agno 中的定位。02_hybrid_search.py 的文档字符串说明 Knowledge 支持三种搜索类型Vector语义相似度搜索能找概念相关但用词不匹配的内容Keyword全文搜索快速、精确匹配术语Hybrid向量 关键词结合被标注为 Recommended default推荐默认。该示例把同一份 PDF 分别灌入三个不同 collection逐一对比三种搜索类型的回答效果from agno.agent import Agent from agno.knowledge.embedder.openai import OpenAIEmbedder from agno.knowledge.knowledge import Knowledge from agno.models.openai import OpenAIResponses from agno.vectordb.qdrant import Qdrant from agno.vectordb.search import SearchType qdrant_url http://localhost:6333 pdf_url https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf def create_knowledge(search_type: SearchType) - Knowledge: return Knowledge( vector_dbQdrant( collectionsearch_types_%s % search_type.value, urlqdrant_url, search_typesearch_type, embedderOpenAIEmbedder(idtext-embedding-3-small), ), )if __name__ __main__: async def main(): search_types [ (SearchType.vector, Vector (semantic similarity)), (SearchType.keyword, Keyword (full-text search)), (SearchType.hybrid, Hybrid (vector keyword)), ] for search_type, description in search_types: knowledge create_knowledge(search_type) # skip_if_existsTrue avoids re-processing if run multiple times await knowledge.ainsert(urlpdf_url, skip_if_existsTrue) agent Agent( modelOpenAIResponses(idgpt-5.2), knowledgeknowledge, search_knowledgeTrue, markdownTrue, ) agent.print_response(How do I make pad thai?, streamTrue) asyncio.run(main())几个要点search_type参数直接传给Qdrant构造函数取值来自agno.vectordb.search.SearchType三个搜索类型用不同的 collection 名search_types_vector、search_types_keyword、search_types_hybrid保证同一文档在三种模式下各自独立建索引便于对照skip_if_existsTrue避免重复运行时重复处理同一 URL多次实验时保留这个参数Agent 侧用search_knowledgeTrue启用 agentic RAG 模式。07_knowledge 的 README 区分了两种模式add_knowledge_to_contextTrue上下文自动注入和search_knowledgeTrueAgent 持有搜索工具、自行决定何时搜索后者是默认且推荐的方式。运行方式与 README 给出的示例一致.venvs/demo/bin/python cookbook/07_knowledge/02_building_blocks/02_hybrid_search.py运行后终端会按顺序打印三段输出每段以SEARCH TYPE: ...分隔分别展示 vector、keyword、hybrid 三种模式下对 How do I make pad thai? 的回答。你可以直接对比三段回答确认 hybrid 模式在精确术语问题上的表现再进入重排配置。第二步在 hybrid 召回之上挂 Cohere rerankerhybrid 解决的是召回得更全重排解决的是排得更准。03_reranking.py 的文档字符串定义了 reranking 就是两阶段检索流程第一阶段用 vector/hybrid 搜索召回候选结果第二阶段由 reranker 模型按相关性对结果打分并重新排序。文档说明这especially for complex queries能显著提升结果质量。目前支持四类 rerankerCohereReranker标注 recommended、SentenceTransformerReranker本地 BAAI/bge 模型、InfinityReranker自托管、BedrockRerankerAWS Bedrock。本文按标题主线使用 Cohere。完整配置只有几行核心差异——在Qdrant构造里加reranker参数搜索类型保持SearchType.hybridfrom agno.agent import Agent from agno.knowledge.embedder.openai import OpenAIEmbedder from agno.knowledge.knowledge import Knowledge from agno.knowledge.reranker.cohere import CohereReranker from agno.models.openai import OpenAIResponses from agno.vectordb.qdrant import Qdrant from agno.vectordb.search import SearchType qdrant_url http://localhost:6333 # Knowledge with hybrid search Cohere reranking knowledge Knowledge( vector_dbQdrant( collectionreranking_demo, urlqdrant_url, search_typeSearchType.hybrid, embedderOpenAIEmbedder(idtext-embedding-3-small), rerankerCohereReranker(modelrerank-multilingual-v3.0), ), ) agent Agent( modelOpenAIResponses(idgpt-5.2), knowledgeknowledge, search_knowledgeTrue, instructions[ Always search your knowledge base before answering., Include sources in your response., ], markdownTrue, ) if __name__ __main__: async def main(): await knowledge.ainsert( urlhttps://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf ) agent.print_response( What are some good Thai dessert recipes?, streamTrue, ) asyncio.run(main())配置说明rerankerCohereReranker(modelrerank-multilingual-v3.0)与search_typeSearchType.hybrid配合构成hybrid 召回 → Cohere 重排的两阶段链路reranker 类从agno.knowledge.reranker.cohere导入这一步依赖第二步之外的COHERE_API_KEY环境变量没设置会导致重排调用失败Agent 的instructions明确要求回答前先搜索知识库并在回答中包含来源这是示例自带的行为约束便于在验证时观察 Agent 是否真的走了检索链路。运行.venvs/demo/bin/python cookbook/07_knowledge/02_building_blocks/03_reranking.py结果如何判断这两个示例没有断言式的自动校验验证方式是观察终端流式输出02 示例三段SEARCH TYPE: ...分隔的回答依次出现重点看 hybrid 段对 How do I make pad thai? 的回答是否覆盖了具体做法步骤03 示例终端打印Hybrid search Cohere reranking标题后Agent 流式输出对 What are some good Thai dessert recipes? 的回答。由于 instructions 要求包含来源可以从回答中附带的来源信息确认检索链路生效。示例输出内容依赖所用模型的实际回答文档未给出固定期望文本不要以某段具体措辞作为成功标准。限制与可选分支示例数据源是固定的公开 PDFThaiRecipes.pdfcollection 名reranking_demo等和 embeddertext-embedding-3-small沿用了示例原值换成自己的文档时替换ainsert的 URL 和 collection 名即可其余链路不变。如果不想依赖 Cohere 服务03 示例的文档字符串列出了替代 rerankerSentenceTransformerReranker本地 BAAI/bge 模型无需外部 API key、InfinityReranker自托管、BedrockRerankerAWS可对照 09_archive 中的 redis_db_with_cohere_reranker.py 等存档示例了解其他向量库上挂 reranker 的写法。除搜索类型与 reranker 外chunking、embedder 的调优分别在同目录的 01_chunking_strategies.py 和 06_embedders.py 中属于独立的调优任务不在本文范围内。【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Fast Video Cutter Joiner:轻量化视频处理工具的核心技术与应用

Fast Video Cutter Joiner:轻量化视频处理工具的核心技术与应用

1. Fast Video Cutter Joiner 核心功能解析Fast Video Cutter Joiner 是一款集视频剪切、合并与格式转换于一体的轻量化工具,其6.9.5.0便携版仅18.9MB的体积却提供了专业级的视频处理能力。作为一款多语言支持的工具,它特别适合需要快速处理视频素材但又…

📅 2026/9/11 17:50:24
G-Helper完整免费替代华硕Armoury Crate的单文件工具

G-Helper完整免费替代华硕Armoury Crate的单文件工具

G-Helper完整免费替代华硕Armoury Crate的单文件工具 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertbook, RO…

📅 2026/9/11 17:50:24
能源汇阅[DP01] | N015 电价没有变天,企业用电账本算法正在彻底革新

能源汇阅[DP01] | N015 电价没有变天,企业用电账本算法正在彻底革新

摘要:随着电力市场改革深化、现货市场扩容、分时电价精细化及绿电政策下沉,企业用电成本不再是固定“一口价”模式。本轮改革并非电价普涨,而是将电力成本拆解为电能量、调节能力、可靠容量、绿色环境四大独立维度,重构企业用电成…

📅 2026/9/11 17:50:24
MORE NEWS

更多资讯

📰

智能家居与物联网实战:把传感器固件写成YAML:从看懂ESPHome到完成第一次可检查编译

智能家居与物联网实战:把传感器固件写成YAML:从看懂ESPHome到完成第一次可检查编译 [!NOTE] 手写固件能理解底层,ESPHome则让常见设备功能用声明式配置表达。真正入门不该从复制一长段别人家的配置开始,而应先弄清板型、框架、组件和编译产物。本课用没有真实引脚操作的模板…

📰

智能家居与物联网实战:温度跳一下就该修传感器吗?先分清过滤、校准和真实变化

智能家居与物联网实战:温度跳一下就该修传感器吗?先分清过滤、校准和真实变化 [!NOTE] 传感器偶尔出现尖峰,平滑处理可以减少干扰,但它不会自动修正系统偏差,也不能证明测量更准确。滤波、校准和异常拒绝解决的是不同问题。本课用可重复样本观察中位数和偏移校正,解释ESP…

📰

GEC6818+GY-39环境监测:嵌入式Linux显示触摸与传感器实战

简介:这是一份基于GEC6818开发板的嵌入式Linux综合项目资源,适合需要完成课程设计或入门嵌入式开发的读者。项目以C语言实现,融合了GPIO控制、GY-39传感器采集、LCD显示、触摸屏交互与音乐播放等功能,可触屏控制小灯开关以及音乐的…

📰

ArduPilot 飞控源码拆解:5 类飞行器共用一套内核,从 HAL 到 SITL 的完整导读

ArduPilot 飞控源码拆解:5 类飞行器共用一套内核,从 HAL 到 SITL 的完整导读 【免费下载链接】ardupilot ArduPlane, ArduCopter, ArduRover, ArduSub source 项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot 如果你打算给无人机写控…

📰

WinApps 部署教程:多台 Linux 机器批量跑起 Windows 应用

WinApps 部署教程:多台 Linux 机器批量跑起 Windows 应用 【免费下载链接】winapps Run Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS, including Nautilus integration. Hard f…

📰

MindsHub Cowork 如何用 make pack-local 从本地未提交源码打包 macOS .app

MindsHub Cowork 如何用 make pack-local 从本地未提交源码打包 macOS .app 【免费下载链接】mindshub The unified workspace where open-source models get things done for you. 项目地址: https://gitcode.com/GitHub_Trending/mi/mindshub 当你在前端或 backend/co…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬