agentic_rag
基于Gemini的Agentic RAG聊天机器人,融合本地知识库与函数调用实现可解释的智能问答
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于Gemini的Agentic RAG聊天机器人,融合本地知识库与函数调用实现可解释的智能问答
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有过这样的经历:问 AI 一个需要专业知识的问题,它要么胡编乱造,要么给出一个泛泛而谈的答案?传统 RAG(检索增强生成)解决了部分问题,但当问题需要多步推理、动态查询多个知识点时,它的局限性就暴露出来了。Agentic RAG 正是为了解决这个痛点而生——它让 AI Agent 具备自主决策能力,在回答前主动规划检索路径、调用工具、层层推理,最终给出有据可查的精准答案。
图1:Agentic RAG Chat 交互界面演示

Agentic RAG Chat 的作者 AndrewNgo-ini 在 2024 年底创建了这个项目。当时 RAG 技术已经开始在企业场景中广泛应用,但市面上的大多数方案存在两个根本问题:一是检索与生成脱节,AI 经常忽略检索到的上下文;二是缺乏推理透明度,用户无法追溯答案的来源。
他决定自己动手,做一个完全可控、可解释的 Agentic RAG 实现。技术选型上,采用了 Gemini 作为底层大模型(免费额度友好)、OpenAI SDK 的兼容接口做接入层、自研的 cosine similarity 余弦相似度算法做检索排序,FastAPI 提供后端服务,纯 HTML/CSS/JS 构建前端——整个栈简洁到几乎没有额外依赖,却能完整呈现 Agentic RAG 的核心工作流程。
与传统 RAG 的检索-拼 Context-生成线性流程不同,Agentic RAG 引入了一个Agent 决策循环,包含以下关键环节:
步骤1:意图理解与规划。用户提问后,Agent 先理解问题是否真的需要外部知识。如果问题本身可以在模型参数知识内回答,就跳过检索直接响应。如果需要检索,Agent 会拆解问题,识别需要查询哪些知识面。
步骤2:动态多步检索(Multi-Step Retrieval)。Agent 不是一次性把全部相关文档取回再生成,而是按需逐步调用检索工具。例如问 LangChain 和 LangGraph 在处理循环逻辑时有什么区别,Agent 可能先检索 LangChain 的循环机制,再检索 LangGraph 的实现,必要时再交叉对比——这种迭代式检索确保每一步 Context 都精准服务于推理。
步骤3:Chain of Thought 推理链。在生成最终答案前,Agent 会输出一段中间推理步骤(Thought → Action → Observation),用户可以清楚看到 AI 是怎么一步步推导的,每一个结论背后引用了哪条检索结果。这对于专业场景(如法律、医疗、金融)尤为关键——用户需要知道答案的来源,而不仅仅是结论。
步骤4:函数调用(Function Calling)。Agent 可以调用预定义的工具函数来实现动态检索,而不仅限于预设的知识库。代码中的 embed_texts() 调用 Gemini Embedding 模型生成向量表示,cosine_similarity() 计算向量相似度,为检索提供了语义级别的匹配能力。
| 组件 | 技术选型 | 作用 |
|---|---|---|
| 大模型 | Gemini 2.0 Flash | 免费额度友好,响应速度快 |
| Embedding | Gemini text-embedding-004 | 语义向量生成 |
| 后端框架 | FastAPI + uvicorn | 高性能异步 API |
| 数据验证 | Pydantic 2.5 | 类型安全的请求/响应模型 |
| 前端 | 纯 HTML/CSS/JS(零依赖) | 极轻量,无需构建工具 |
| 向量计算 | NumPy | 高效矩阵运算 |
值得注意的是,前端虽然技术上标注为 HTML,但实际上是一个功能完整的 Web 聊天界面(index.html 约 13KB),包含了消息渲染、历史记录、加载动画等完整交互逻辑。作者刻意选择零依赖的前端方案,目的是让整个项目可以在任何静态托管环境(如 GitHub Pages、Nginx、甚至本地 file://)零配置运行。
项目对硬件几乎无要求,因为推理完全由 Gemini 云端处理,本地只负责 Embedding 计算和 FastAPI 服务。一个 512MB 内存的轻量云主机即可流畅运行,磁盘占用不超过 100MB。唯一强依赖是 Python 3.11+ 和 Gemini API Key(在 Google AI Studio 免费申请)。
git clone https://github.com/AndrewNgo-ini/agentic_rag.git
cd agentic_rag
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.sample .env
# 编辑 .env 填入 GEMINI_API_KEY
gunicorn server:app --bind 0.0.0.0:8000
浏览器访问 http://localhost:8000 即可看到聊天界面。如果在服务器部署,只需在 .env 中配置 API Key,并通过 Nginx 反向代理到 8000 端口。
短板:项目目前没有提供 Docker 支持,也没有 docker-compose 一键启动方案。如果用户习惯容器化部署,需要自己写 Dockerfile。对于没有 Python 环境的小白用户,有一定的上手门槛。
依赖云端 API:整个系统依赖 Google Gemini API,离线场景完全不可用。如果 Gemini 的服务不稳定或 API 政策调整,项目会受到直接影响。
知识库容量有限:当前实现使用内存中的静态数据列表,没有连接真正的向量数据库(如 ChromaDB、FAISS、Milvus)。数据量大时,检索效率和准确性都会下降。
缺乏生产级特性:没有用户认证、没有对话历史持久化、没有 Rate Limiting。对于需要多人使用或长期运行的生产环境,需要大量二次开发。
项目虽然只有 167 stars,但增长趋势得分高达 10.64(月趋势 29.61),反映出市场对 Agentic RAG 方向的持续关注。GitHub 上已有 21 次 forks,topics 中包含了 rag、agentic-ai、llm、langchain 等标签,说明社区已将其定位为 AI Agent + RAG 交叉领域的实践参考。
从更大的视角看,Agentic RAG 正在成为 LLM 应用落地的主流范式。相比纯 RAG,它解决了答案幻觉和引用不透明的问题;相比 Agent 框架(如 LangGraph),它更轻量、更专注。在 RAG 技术从能用走向可信的过程中,这类项目提供了有价值的参考实现。
本报告基于 GitHub 仓库公开信息生成,分析时间:2026-07-25