agno-6-rag
什么是 RAGRAGRetrieval Augmented Generation检索增强生成是一种结合了信息检索和文本生成的技术它通过在生成回答之前先从外部知识源检索相关信息来增强大型语言模型LLM的能力。RAG 的核心思想是让 LLM 不仅依赖其训练数据中的知识还能够访问和利用外部、最新的信息源。RAG 工作原理RAG 系统的基本工作流程包括以下几个步骤┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ 用户查询 │────│ 查询问题向量化 │────│ 向量检索 │ └─────────────┘ └──────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ 生成回答 │────│ LLM 处理 │────│ 相关文档 │ └─────────────┘ └──────────────┘ └─────────────┘Agno 的 RAG检索增强生成是一套模块化、可插拔的完整技术方案用于构建能够与私有数据交互的智能体Agent。其核心理念是智能体驱动的检索增强生成Agentic RAG。与传统 RAG 不同Agno 的智能体并非被动地接收检索结果而是主动决定“何时”搜索、“搜索什么”以及“如何使用”检索到的信息核心组件与工作流程Agno 的知识库Knowledge Base通过一套标准化的流水线来处理和检索数据。内容源 (Content Sources)原始数据的来源可以是 PDF、网页、数据库等。读取器 (Readers)负责解析不同类型的内容源提取出纯文本。例如PDFReader、WebsiteReader、CSVReader等。分块策略 (Chunking Strategies)将长文本切分成适合处理的小块。支持语义分块、固定大小分块等策略。嵌入器 (Embedders)将文本块转换为向量数学表示。Agno 支持 29 种嵌入器选项。向量数据库 (Vector Databases)存储向量并支持相似性搜索。Agno 支持 25 种以上的向量数据库。重排序器 (Rerankers)可选对初步检索结果进行二次排序提升最相关文档的排名两种 RAG 模式Agno 提供了两种 RAG 模式适应不同复杂度的需求。传统 RAG (Traditional RAG)通过add_referencesTrue启用。系统在每次请求时自动检索知识库并将检索到的内容作为上下文注入到系统提示中。适用于大多数标准问答场景。智能体 RAG (Agentic RAG)通过search_knowledgeTrue启用当提供knowledge时默认开启。智能体拥有一个search_knowledge_base工具自主决定是否以及如何检索信息。适用于复杂、多步推理的场景。高级特性混合搜索 (Hybrid Search)结合向量搜索和关键词搜索提高检索准确性。通过在PgVector等向量数据库中设置search_typeSearchType.hybrid启用。知识过滤 (Knowledge Filtering)基于元数据如用户 ID、文档类型过滤检索结果实现数据隔离和个性化。自定义检索器 (Custom Retriever)允许通过knowledge_retriever参数传入自定义函数实现对检索逻辑的完全控制。异步操作 (Async Operations)通过ainsert和arun等方法支持异步操作优化大规模数据加载和响应的性能。远程知识库 (LightRAGKnowledgeBase)集成 LightRAG一种基于图结构的 RAG 系统以增强知识查询能力。文档加载Agno 支持多种文档格式的加载器Reader支持格式说明PDFReaderPDF支持加密PDF、图像OCRPDFImageReaderPDF图像专门处理基于图像的PDFDocxReaderDOCXWord 文档CSVReaderCSV表格数据JSONReaderJSON结构化数据TextReaderTXT纯文本文件MarkdownReaderMDMarkdown 文档WebsiteReader网页爬取整个网站WebSearchReader搜索结果网络搜索结果WikipediaReaderWikipediaWikipedia 文章YouTubeReaderYouTube视频转录和元数据ArxivReaderarXiv学术论文FirecrawlReader网页通过Firecrawl API抓取从url加载from agno.knowledge.reader.website_reader import WebsiteReader website_reader WebsiteReader( max_depth2, # 爬取深度 max_links50, # 最大链接数 chunkTrue, chunk_size800 ) documents website_reader.read(https://docs.agno.com) if documents: print(f成功读取 {len(documents)} 个文档片段。) print(第一个文档片段的内容预览) print(documents[0].content[:500]) # 打印前500个字符 print(\n元数据, documents[0].meta_data) else: print(未能读取到任何内容。)从本地加载import os from pathlib import Path from agno.knowledge.reader.pdf_reader import PDFReader from agno.knowledge.knowledge import Knowledge from agno.knowledge.embedder.openai import OpenAIEmbedder from agno.vectordb.pgvector import PgVector, SearchType from dotenv import load_dotenv load_dotenv() # 创建 PDF Reader pdf_reader PDFReader( chunkTrue, chunk_size1000, split_on_pagesTrue, read_imagesTrue, # OCR 读取图像 # 通用配置 namePDF Documents # Reader 名称 ) script_dir Path(__file__).parent documents pdf_reader.read(str(script_dir) /ThaiRecipes.pdf) if documents: print(f成功读取 {len(documents)} 个文档片段。) print(第一个文档片段的内容预览) print(documents[0].content[:500]) # 打印前500个字符 print(\n元数据, documents[0].meta_data) else: print(未能读取到任何内容。)ReaderFactory智能选择from pathlib import Path from agno.knowledge.reader.reader_factory import ReaderFactory # 自动选择 Reader # 根据文件后缀识别 script_dir Path(__file__).parent reader ReaderFactory.get_reader_for_extension(.pdf) docs reader.read(str(script_dir) /caozuo.pdf ) for doc in docs: print(doc)文档分块策略策略 (Strategy)说明适用场景示例Fixed Size Chunking按固定的字符或 Token 数量进行切分并可设置重叠部分。需要统一的块大小适用于格式简单或对切分精度要求不高的文档。FixedSizeChunking(chunk_size1000, overlap200)Semantic Chunking通过分析文本的语义相似度在自然语义边界处进行切分。需指定一个嵌入器Embedder。通用文本能更好地保持内容的语义完整性。SemanticChunking(embedderembedder, chunk_size500, similarity_threshold0.5)Recursive Chunking使用多级分隔符如段落、句子进行分层切分力图在达到目标大小的同时最大限度地保持文本的自然结构。结构混合的文档。RecursiveChunking(chunk_size500, separators[\n\n, \n, . , ])Document Chunking基于文档的自然结构如段落、章节进行切分以保留文档的原始层次。结构清晰的文档如报告、书籍需要保留章节上下文。DocumentChunking(max_chunk_size2000, preserve_sectionsTrue)Markdown Chunking专门为 Markdown 文件设计根据标题层级#,##等进行切分。Markdown 格式的文档。-Code Chunking利用抽象语法树AST分析代码结构在函数、类等逻辑边界处切分。源代码文件。CodeChunking(languagepython, chunk_byfunction)CSV Row Chunking将 CSV 文件中的每一行作为一个独立的块。表格型数据。-Agentic Chunking使用 LLM 智能地分析文本自主决定在何处进行切分。内容复杂、结构不清晰的文档。AgenticChunking(modelmodel, max_chunk_size3000)from pathlib import Path from agno.knowledge.reader.pdf_reader import PDFReader from dotenv import load_dotenv from agno.knowledge.chunking.fixed import FixedSizeChunking load_dotenv() fixed_size_chunk FixedSizeChunking( chunk_size1000, overlap200 ) # 创建 PDF Reader pdf_reader PDFReader( chunkTrue, chunk_size1000, split_on_pagesTrue, read_imagesTrue, # OCR 读取图像 # 通用配置 namePDF Documents, # Reader 名称 chunking_strategyfixed_size_chunk ) script_dir Path(__file__).parent documents pdf_reader.read(str(script_dir) /caozuo.pdf) if documents: print(f成功读取 {len(documents)} 个文档片段。) print(第一个文档片段的内容预览) print(documents[0].content[:500]) # 打印前500个字符 print(\n元数据, documents[0].meta_data) else: print(未能读取到任何内容。)向量数据库集成Agno 支持20 种向量数据库包括数据库类型适用场景PgVectorPostgreSQL 扩展生产环境、需要 SQL 功能LanceDB本地嵌入式开发测试、快速原型ChromaDB本地/云端开发和生产均可Pinecone托管服务生产环境、无运维需求Qdrant本地/云端高性能需求Weaviate本地/云端复杂查询、GraphQLMilvus分布式向量库大规模生产环境MongoDB文档数据库已有 MongoDB 基础设施SingleStore分布式SQL实时分析Cassandra分布式NoSQL高可用性需求Couchbase文档数据库移动和边缘计算Clickhouse列式数据库分析型应用Upstash VectorServerlessServerless 应用LightRAG高性能高准确率的开源RAG对检索精度、性能要求高的场景参考Weaviate Db - Agnopg向量数据库import os from agno.agent import Agent from agno.knowledge.knowledge import Knowledge from agno.vectordb.pgvector import PgVector, SearchType from dotenv import load_dotenv from agno.models.deepseek import DeepSeek from agno.knowledge.embedder.openai import OpenAIEmbedder from agno.knowledge.reranker.cohere import CohereReranker load_dotenv() #定义大模型 deepseek DeepSeek(iddeepseek-chat) # OpenAI 嵌入器 embedder OpenAIEmbedder( idtext-embedding-v4, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, dimensions1536, # 向量维度 api_keyos.getenv(QWEN_API_KEY) ) vector_db PgVector( table_namemk1, db_urlpostgresql://postgres:ekcai123456localhost:5432/rag1, embedderembedder, search_typeSearchType.hybrid, # 混合检索 vector_score_weight0.5, # 正确的参数名 ) knowledge Knowledge(vector_dbvector_db) docs knowledge.search(agno是什么) for doc in docs: print(doc.content)Agno 提供了多种内置的检索方法通过SearchType枚举配置from agno.vectordb.search import SearchType # 向量搜索语义相似度 SearchType.vector # 关键词搜索传统全文搜索 SearchType.keyword # 混合搜索结合向量和关键词 SearchType.hybrid支持混合搜索的向量数据库PgVectorPineconeLanceDBWeaviateMongoDBQdrantMilvusRAG 与 Agent 集成# 步骤1创建知识库 import os from agno.agent import Agent from agno.knowledge.knowledge import Knowledge from agno.vectordb.pgvector import PgVector, SearchType from dotenv import load_dotenv from agno.models.deepseek import DeepSeek from agno.knowledge.embedder.openai import OpenAIEmbedder from agno.knowledge.reranker.cohere import CohereReranker load_dotenv() #定义大模型 deepseek DeepSeek(iddeepseek-chat) # OpenAI 嵌入器 embedder OpenAIEmbedder( idtext-embedding-v4, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, dimensions1536, # 向量维度 api_keyos.getenv(QWEN_API_KEY) ) # rerankerCohereReranker(modelrerank-v3.5) vector_db PgVector( table_namemy_knowledge, db_urlpostgresql://postgres:ekcai123456localhost:5432/rag1, embedderembedder, search_typeSearchType.hybrid, vector_score_weight0.5, # 正确的参数名 #rerankerreranker ) knowledge Knowledge(vector_dbvector_db) # knowledge.insert( # urlhttps://docs.agno.com/agents/overview.md # ) # 步骤2创建 Agent 并关联知识库 agent Agent( modeldeepseek, nameKnowledge Agent, knowledgeknowledge, # 关联知识库 add_knowledge_to_contextTrue, # 将知识添加到上下文 search_knowledgeFalse, # 不使用搜索工具可选 instructions在回答问题前总是先搜索你的知识库。包含来源引用。, knowledge_filters{source_type: ThaiRecipes.pdf} #静态过滤器 ) # 步骤3查询 agent.print_response(你是谁?, markdownTrue)agentic_rag实现# 步骤1创建知识库 import os from agno.agent import Agent from agno.knowledge.knowledge import Knowledge from agno.vectordb.pgvector import PgVector, SearchType from dotenv import load_dotenv from agno.models.deepseek import DeepSeek from agno.knowledge.embedder.openai import OpenAIEmbedder from agno.knowledge.reranker.cohere import CohereReranker load_dotenv() #定义大模型 deepseek DeepSeek(iddeepseek-chat) # OpenAI 嵌入器 embedder OpenAIEmbedder( idtext-embedding-v4, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, dimensions1536, # 向量维度 api_keyos.getenv(QWEN_API_KEY) ) # 排序 # rerankerCohereReranker(modelrerank-v3.5) vector_db PgVector( table_namemy_knowledge, db_urlpostgresql://postgres:ekcai123456localhost:5432/rag1, embedderembedder, search_typeSearchType.hybrid, vector_score_weight0.5, # 正确的参数名 #rerankerreranker ) knowledge Knowledge(vector_dbvector_db) # knowledge.insert( # urlhttps://docs.agno.com/agents/overview.md # # ) # 步骤2创建 Agent 并关联知识库 agent Agent( modeldeepseek, nameKnowledge Agent, knowledgeknowledge, # 关联知识库 search_knowledgeTrue, # 启用知识搜索默认为 True instructions在回答问题前总是先搜索你的知识库。包含来源引用。 ) # 步骤3查询 agent.print_response(你是谁, markdownTrue)

相关新闻

耐火 + 高防护母线槽结构解析:加厚绝缘、厚铝合金外壳、密封散热设计要点

耐火 + 高防护母线槽结构解析:加厚绝缘、厚铝合金外壳、密封散热设计要点

耐火 高防护母线槽结构解析:加厚绝缘、厚铝合金外壳、密封散热设计要点一、前言化工厂区、地下车库、高层建筑消防配电,对母线槽耐火性能、防尘防水防护等级要求严苛。母线槽外壳、绝缘层、散热密封结构是防火防水能力的核心载体。本文结合扬中金展电气…

2026/7/6 13:41:27阅读更多 →
掌握Universal Extractor 2:从500+格式到高级提取完全指南

掌握Universal Extractor 2:从500+格式到高级提取完全指南

掌握Universal Extractor 2:从500格式到高级提取完全指南 【免费下载链接】UniExtract2 Universal Extractor 2 is a tool to extract files from any type of archive or installer. 项目地址: https://gitcode.com/gh_mirrors/un/UniExtract2 Universal Ex…

2026/7/6 13:41:27阅读更多 →
基于YOLOv8的铁路障碍物检测:从数据准备到边缘部署全流程实践

基于YOLOv8的铁路障碍物检测:从数据准备到边缘部署全流程实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. 先搞清楚这个系统到底能解决什么实际问题 这个“智慧铁轨巡检”项目,核心是利用YOLOv8这个目标检测模型,去…

2026/7/6 13:41:27阅读更多 →
【吃透 MySQL InnoDB连载】第 3 章・InnoDB 锁机制

【吃透 MySQL InnoDB连载】第 3 章・InnoDB 锁机制

第 3 章 InnoDB 锁机制事务隔离解决了业务数据错乱、并发读写异常的表象问题,锁,是 InnoDB 实现事务隔离、协调并发竞争、保障数据一致性的核心底层支撑。上一章我们站在业务视角,梳理了更新丢失、脏读、不可重复读、幻读等线上并发故障现象&…

2026/7/6 14:51:40阅读更多 →
【关注可白嫖源码】--课程设计+毕业设计+springboot桂雯溪卡车运营平台管理系统[编号:project39458](案例分析)

【关注可白嫖源码】--课程设计+毕业设计+springboot桂雯溪卡车运营平台管理系统[编号:project39458](案例分析)

本文仅展示核心实现逻辑与部分代码片段,完整项目源码、配套文档、数据库脚本内容较多,篇幅有限无法全部放出。 有需要完整资源的同学,可以在评论区留言【资料或领源码】,我会一 一回复站内私信,发送完整文件 目录 摘 …

2026/7/6 14:51:40阅读更多 →
【关注可白嫖源码】--课程设计+毕业设计+springboot旅游路线APP[编号:project39867](案例分析)

【关注可白嫖源码】--课程设计+毕业设计+springboot旅游路线APP[编号:project39867](案例分析)

本文仅展示核心实现逻辑与部分代码片段,完整项目源码、配套文档、数据库脚本内容较多,篇幅有限无法全部放出。 有需要完整资源的同学,可以在评论区留言【资料或领源码】,我会一 一回复站内私信,发送完整文件 摘 要 在…

2026/7/6 14:51:40阅读更多 →
AI榨油灌装智能巡检机器人 Qt信创完整项目

AI榨油灌装智能巡检机器人 Qt信创完整项目

# AI榨油灌装智能巡检机器人 Qt信创完整项目 ## 项目定位 适配**银河麒麟、统信UOS ARM64/x86**信创工控机,面向**榨油灌装工**,AI车间巡检机器人上位管理系统;覆盖螺旋榨油机、滤油机、自动食用油灌装机全套产线监控、AI故障诊断、食品级标准化维保工单、油脂产线易损件台…

2026/7/6 14:51:40阅读更多 →
【VLM】MiniCPM-o 4.5:全双工实时交互

【VLM】MiniCPM-o 4.5:全双工实时交互

note MiniCPM-o 4.5的核心是Omni-Flow框架,它将多模态输入与输出沿共享时间轴对齐,把传统轮次交互转变为连续全双工过程。整个架构包含三个核心组件:多模态编码器、LLM主干、语音解码器。 文章目录note一、MiniCPM-o 4.5Reference一、MiniCP…

2026/7/6 14:51:40阅读更多 →
HAL_Delay 为什么不能在中断里调?

HAL_Delay 为什么不能在中断里调?

前言很多 STM32 新手写过这样的代码:void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {HAL_Delay(50); // 按键消抖HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); }下载后发现:按键按下去,程序卡死了。为什么 HAL_Delay 在 main 循环里用得…

2026/7/6 14:46:37阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →