Configuration Parsing Warning:Invalid JSON for config file config.json
YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Agentic RAG 智能问答系统
ReAct Agent 驱动 | 多模态知识库 | MCP 工具扩展 | 边缘/本地部署
基于 ReAct Agent 的多模态检索增强生成(RAG)系统,支持文本、图片、音频、视频的统一入库与跨模态检索,提供智能问答、工具调用、MCP 扩展、流式对话、语音交互等完整能力。支持 OpenAI / 本地 OpenAI-compatible 模型,可灵活部署在云端或边缘设备上。
当前版本:
0.1.0。部分能力还需要进一步开发验证。
目录
项目背景
为什么需要 Agentic RAG?
传统 RAG 系统只能被动检索,而现实场景中的问题往往需要多步推理、工具调用和动态决策:
- 静态检索局限 — 一次性检索难以回答需要多轮推理的复杂问题。
- 模态割裂 — 文本、图片、音视频分散存储,无法统一检索,大量非文本信息被浪费。
- 工具孤岛 — 检索、计算、外部 API 等能力各自独立,Agent 无法根据上下文自主选择工具。
- 部署复杂 — 多数方案依赖云端服务,存在隐私泄露风险和高昂调用成本。
本项目的解决思路
本项目将 ReAct Agent 与 多模态 RAG 深度融合,让 Agent 能够"思考→行动→观察→再思考",在推理过程中自主决定何时检索知识库、何时调用外部工具、何时生成最终答案:
- 🧠 Agent 驱动检索 — Agent 根据问题复杂度自主决定检索策略,支持多轮推理和工具链调用。
- 🔗 MCP 生态接入 — 通过 Model Context Protocol 接入外部工具,Agent 能力可无限扩展。
- 🎨 多模态统一 — 文本、图片、音频、视频统一向量空间,跨模态语义检索。
- 🏠 本地优先 — 支持本地 LLM / Embedding 服务,数据不出设备,隐私安全可控。
应用场景
| 领域 | 典型场景 | 核心价值 |
|---|---|---|
| 🏢 企业知识管理 | 智能客服、内部培训、文档问答 | 多轮对话理解上下文,自动调用内部工具查询数据 |
| 🔬 研发辅助 | 代码库问答、技术文档检索、API 集成 | Agent 自主检索代码示例、调用调试工具、生成修复建议 |
| 📚 教育科研 | 文献综述、课件问答、实验数据分析 | 跨文献多轮推理,自动提取关键信息并生成综述 |
| 🎬 内容创作 | 素材检索、脚本生成、多模态内容理解 | 以文搜图/以图搜视频,Agent 辅助创作全流程 |
| 🏥 专业领域 | 医疗文献问答、法律条文检索、金融报告分析 | 严格的数据隐私要求下本地运行,专业工具链集成 |
核心特性
🚀 功能特性
- ReAct Agent 引擎 — 支持
Thought → Action → Observation → Final Answer循环,以及原生 Function Calling,Agent 可自主规划多步推理。 - 多模式智能路由 — 按查询意图动态装配工具集(知识库检索、联网搜索、媒体理解及 MCP 扩展工具),Agent 每轮推理均可自主调用工具。
- 四模态统一检索 — 文本、图片、音频、视频在同一向量空间中表示,支持以文搜图、以图搜视频等跨模态查询。
- 混合检索策略 — 支持
naive纯向量检索和hybrid向量 + 知识图谱混合检索,提升召回准确率。 - 流式对话体验 — REST SSE 与 WebSocket 双通道流式输出,实时展示 Agent 思考过程和工具调用。
- 多入口灵活接入 — Web UI、REST API、WebSocket、CLI、异步 Python SDK,满足不同场景需求。
🔧 技术特性
- MCP 工具扩展 — 启动时自动连接外部 MCP Server,将工具注册到 Agent,实现能力热插拔。
- 多提供商 LLM — 内置 OpenAI、以及任意 OpenAI-compatible 本地服务适配。
- 模块化架构 — Agent 引擎、知识管线、向量存储、LLM 服务、记忆系统分层解耦,可独立替换升级。
- 本地数据持久化 — SQLite 会话存储、Milvus Lite 向量库、JSON 知识图谱,零外部依赖即可运行。
- 可配置预处理 — 文本分块大小、图片处理策略、音频切片参数等均可通过环境变量调节。
系统架构
整体架构
┌─────────────────────────────────────────────────────────────┐
│ 接入层 (Entry Points) │
│ Web UI │ REST API │ WebSocket │ CLI │ Python SDK │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Agent 路由与引擎层 │
│ AgentRouter (模式路由) + ReActEngine (推理循环) │
│ ↓ Thought → Action → Observation ↑ │
└──────────────────────────┬──────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌──────────┐
│ RAG 工具 │ │ MCP 工具 │ │ 媒体工具 │
│(知识库) │ │(外部扩展)│ │(语音/图像)│
└────┬────┘ └──────────┘ └──────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 知识管线 (Knowledge Pipeline) │
│ Parse → Process → Embed → Milvus Lite │
│ └────────→ Knowledge Graph (可选) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 数据持久化层 │
│ SQLite (会话/消息) │ Milvus Lite (向量) │ JSON (KG) │
└─────────────────────────────────────────────────────────────┘
知识管线流程
原始输入 (文本/图片/音频/视频/PDF/Office)
│
▼
┌───────────────┐
│ 统一解析层 │ → ContentList (统一内容表示)
│ Parse │
└───────┬───────┘
│
▼
┌───────────────┐
│ 模态处理层 │ → 文本分块 / 图片处理 / 音频切片 / 视频帧提取
│ Process │
└───────┬───────┘
│
▼
┌───────────────┐ ┌───────────────┐
│ 向量化层 │ ──→ │ 知识图谱层 │ (可选,enable_kg=true)
│ Embed │ │ KG Builder │
└───────┬───────┘ └───────────────┘
│
▼
┌───────────────┐
│ 向量存储层 │ → Milvus Lite (本地持久化)
│ Vector Store │
└───────────────┘
Agent 推理流程
用户问题
│
▼
┌─────────────┐
│ AgentRouter│
└──────┬──────┘
│
▼
┌────────────────────────────────────────┐
│ ReAct 推理循环 │
│ ┌─────────┐ ┌─────────┐ ┌────────┐ │
│ │ Thought │ → │ Action │ → │Observe │ │
│ │ (思考) │ │ (行动) │ │ (观察) │ │
│ └─────────┘ └─────────┘ └────────┘ │
│ ↑ │ │
│ └───────────────────────────┘ │
│ (最多 N 轮) │
└────────────────────────────────────────┘
│
▼
┌─────────────┐
│ Final Answer │ → 生成最终回答,附来源引用
└─────────────┘
项目结构
Agentic_RAG/
├── agentic_rag/ # 后端核心代码
│ ├── agent/ # ReAct 引擎、Prompt 模板、模式路由
│ ├── config/ # Pydantic Settings、默认配置
│ ├── core/ # MCP 客户端、多模态处理、STT/TTS
│ ├── data/ # 数据模型、SQLite Repository
│ ├── entrypoints/ # 接入层
│ │ ├── rest/ # FastAPI REST API
│ │ ├── websocket/ # WebSocket 服务
│ │ ├── cli/ # 命令行接口
│ │ ├── sdk/ # Python SDK
│ │ └── gateway/ # 消息平台网关
│ ├── orchestration/ # L1 工具、L2 能力编排
│ ├── runtime/ # 运行时上下文、流总线、轮次协调
│ ├── services/ # LLM、知识管线、记忆、会话、向量存储
│ └── utils/ # 通用工具
├── frontend/ # React 19 + Vite 8 前端
│ ├── src/
│ └── vite.config.js
├── static/ # 前端构建产物(生产模式)
├── tests/ # 测试
│ ├── unit/ # 单元测试
│ ├── integration/ # 集成测试
│ └── dir/ # 测试数据
├── scripts/ # 辅助脚本(预留)
├── data/ # SQLite 运行时数据
├── workspace/ # 上传文件、向量库、知识图谱
├── .env # 环境变量配置(由 .env.example 复制)
├── .env.example # 环境变量模板
├── mcp_servers.json # MCP 配置(JSON)
├── mcp_servers.yaml # MCP 配置(YAML)
├── pyproject.toml # Python 项目配置
└── README.md
快速开始
1. 环境要求
- Python 3.10+
- Node.js 18+(构建 Web UI 需要;生产环境直接使用已构建的
static/产物时可省略)
2. 安装
git clone <repository-url>
cd Agentic_RAG
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows PowerShell
python -m pip install --upgrade pip
pip install -e ".[dev]"
# 完整安装:Anthropic、语音、视频、文档解析和消息网关
# pip install -e ".[dev,anthropic,voice,media,documents,gateways]"
# 可选:PDF/Office 完整解析
pip install pymupdf # PDF 文本提取及 OCR 页面渲染
# 或按 Docling 官方说明安装 docling
3. 配置环境变量
从模板创建 .env 文件:
cp .env.example .env
然后按需修改(配置使用无前缀变量名):
# ============ LLM 配置 ============
DEFAULT_PROVIDER=local
LLM_PROVIDERS__LOCAL__API_BASE=http://localhost:8009/v1
LLM_PROVIDERS__LOCAL__MODEL=your-chat-model
LLM_PROVIDERS__LOCAL__API_KEY=not-needed
LLM_PROVIDERS__LOCAL__VISION_MODEL=your-vision-model
# ============ Embedding 配置 ============
EMBEDDING__PROVIDER=local
EMBEDDING__API_BASE=http://localhost:8010/v1
EMBEDDING__API_KEY=not-needed
EMBEDDING__MODEL=your-embedding-model
EMBEDDING__DIM=768
EMBEDDING__BATCH_SIZE=4
# ============ 向量库配置 ============
MILVUS__DIM=768
# ============ API 服务配置 ============
API__HOST=0.0.0.0
API__PORT=8007
⚠️
EMBEDDING__DIM与MILVUS__DIM必须一致。若需修改已创建集合的维度,请先备份并删除旧的workspace/milvus_lite.db,再重新建库。
使用官方云服务:
# OpenAI
DEFAULT_PROVIDER=openai
LLM_PROVIDERS__OPENAI__API_KEY=your-openai-api-key
LLM_PROVIDERS__OPENAI__API_BASE=https://api.openai.com/v1
LLM_PROVIDERS__OPENAI__MODEL=gpt-4o
# Anthropic Claude(Embedding 仍需单独配置)
DEFAULT_PROVIDER=claude
LLM_PROVIDERS__CLAUDE__API_KEY=your-anthropic-api-key
LLM_PROVIDERS__CLAUDE__API_BASE=https://api.anthropic.com
LLM_PROVIDERS__CLAUDE__MODEL=your-claude-model
4. 构建前端
cd frontend
npm run build
cd ..
Vite 产物输出到 static/,FastAPI 挂载 /static 并在 / 返回 SPA 首页。生产环境只需构建一次;前端源码未改动时无需重复执行。
5. 启动服务
# 生产模式
python -m agentic_rag serve --host 0.0.0.0 --port 8007
# 开发模式(自动重载)
python -m agentic_rag serve --port 8007 --reload
# 或
uvicorn agentic_rag.entrypoints.rest.app:app --host 0.0.0.0 --port 8007 --reload
6. 验证运行
curl http://localhost:8007/health
curl http://localhost:8007/ready
| 地址 | 说明 |
|---|---|
http://localhost:8007/ |
Web UI 主界面 |
http://localhost:8007/docs |
Swagger API 文档 |
http://localhost:8007/health |
进程健康检查 |
http://localhost:8007/ready |
LLM 配置就绪检查 |
✅ 打开 http://localhost:8007/,看到聊天界面即部署成功。若页面空白或报资源加载失败,通常是 static/ 缺失或过期,请回到第 4 步重新执行 npm run build。
使用方式
系统提供多种使用入口:Web UI 是浏览器中的完整交互界面,适合直接使用;CLI / REST API / WebSocket / Python SDK 面向脚本调用与二次开发。
Web UI
# 1. 构建前端(首次或前端有更新时执行)
cd frontend && npm install && npm run build && cd ..
# 2. 启动服务(后端托管 Web UI)
python -m agentic_rag serve --port 8007
启动后在浏览器打开 http://localhost:8007/:
- 对话交互 — 输入问题即开始问答,流式展示 Agent 的 Thought / Action / Observation 推理过程
- 文件上传 — 上传文本、图片、音频、视频入库,对应
/api/v1/rag/upload - 会话管理 — 多会话切换,历史记录持久化在本地 SQLite
CLI 命令行
# 普通问答
python -m agentic_rag chat "什么是 RAG?"
# 自动路由或指定模式
python -m agentic_rag chat --mode research "深入总结知识库中的检索方法"
# 流式输出
python -m agentic_rag chat --stream "解释 ReAct 的执行过程"
# 指定已配置的 Provider
python -m agentic_rag chat --provider local "你好"
# 文本文件入库
python -m agentic_rag ingest --file document.txt --source cli
# 查看当前配置信息
python -m agentic_rag info
# 查看帮助
python -m agentic_rag --help
REST API
非流式聊天
curl -X POST http://localhost:8007/api/v1/chat \
-H 'Content-Type: application/json' \
-d '{"message":"什么是 RAG?","mode":"auto"}'
SSE 流式聊天
curl -N -X POST http://localhost:8007/api/v1/chat/stream \
-H 'Content-Type: application/json' \
-d '{"message":"检索知识库中的向量数据库资料","mode":"research"}'
主要事件类型:text_delta、tool_call_start、tool_call_result、error、done。
知识库检索
curl -X POST http://localhost:8007/api/v1/rag/search \
-H 'Content-Type: application/json' \
-d '{"query":"向量数据库","top_k":5,"mode":"hybrid"}'
文本入库
curl -X POST http://localhost:8007/api/v1/rag/ingest \
-H 'Content-Type: application/json' \
-d '{"content":"Milvus 是一个向量数据库。","source":"manual"}'
文件/多模态上传
curl -X POST http://localhost:8007/api/v1/rag/upload \
-F 'file=@document.pdf' \
-F 'source=manual-upload' \
-F 'ingest_mode=multimodal' \
-F 'mm_method=pure' \
-F 'enable_kg=true'
支持的文件格式:
- 文本/文档:
.txt.md.json.yaml.csv.py.html.pdf.docx - 图片:
.jpg.png.gif.webp.bmp.svg - 视频:
.mp4.avi.mov.mkv.webm - 音频:
.mp3.wav.m4a.ogg.flac
会话管理
# 创建会话(user_id 是查询参数)
curl -X POST 'http://localhost:8007/api/v1/session?user_id=user123'
# 获取会话列表
curl 'http://localhost:8007/api/v1/sessions?user_id=user123'
# 获取会话消息
curl http://localhost:8007/api/v1/session/<session_id>/messages
# 删除会话
curl -X DELETE http://localhost:8007/api/v1/session/<session_id>
WebSocket
const sessionId = crypto.randomUUID()
const ws = new WebSocket(`ws://localhost:8007/ws/${sessionId}`)
ws.addEventListener('open', () => {
ws.send(JSON.stringify({
type: 'chat',
payload: {
message: '检索知识库中的 ReAct 资料',
mode: 'research',
},
}))
})
ws.addEventListener('message', (event) => {
const message = JSON.parse(event.data)
console.log(message.type, message.data)
})
Python SDK
import asyncio
from agentic_rag.entrypoints.sdk.client import AgenticRAGClient
async def main() -> None:
async with AgenticRAGClient("http://localhost:8007") as client:
# 非流式聊天
response = await client.chat("什么是 RAG?", mode="auto")
print(response["answer"])
# 流式聊天
async for event in client.chat_stream("检索知识库"):
print(event)
# 文本入库
result = await client.rag_ingest(
"这是一段需要写入知识库的文本。",
source="sdk",
)
print(result)
asyncio.run(main())
其他功能
多模态知识库
入库模式
/api/v1/rag/upload 参数说明:
| 参数 | 默认值 | 说明 |
|---|---|---|
ingest_mode |
multimodal |
text 跳过媒体项;multimodal 处理媒体项 |
mm_method |
pure |
pure / caption / both |
chunk_size |
512 |
文本分块字符数 |
chunk_overlap |
50 |
分块重叠字符数 |
enable_kg |
false |
构建并持久化知识图谱 |
mm_method 说明:
pure— 直接构造多模态 Embedding 输入;纯文本 Embedding API 会退化为占位文本caption— 使用视觉模型生成图片描述,再对描述文本做 Embeddingboth— 同时使用原始媒体和描述文本
本地数据
运行时产生的数据文件:
data/agentic_rag.db # 会话与消息历史
workspace/milvus_lite.db # Milvus Lite 向量数据库
workspace/knowledge_graph.json # 知识图谱(启用 KG 时)
workspace/uploads/ # 上传文件缓存
🔒 这些文件可能包含用户内容或模型数据,部署时请配置合适的访问控制、备份和清理策略。
MCP 工具扩展
项目支持通过 Model Context Protocol (MCP) 接入外部工具,Agent 可自动发现并使用这些工具。
配置方式
按优先级查找配置:
mcp_servers.jsonmcp_servers.yaml- MCP 环境变量
推荐使用不含密钥的配置文件,通过环境变量提供凭据:
{
"mcpServers": {
"example-search": {
"command": "npx",
"args": ["-y", "example-search-mcp"],
"disabled": false
}
}
}
export EXAMPLE_SEARCH_API_KEY='your-key'
python -m agentic_rag serve
启动日志会显示每个 MCP Server 的连接结果。连接成功的工具会注册到工具中心,并在所有 Agent 模式中可用。
⚠️ 不要把真实 API Key 提交到 Git。若密钥曾进入仓库历史,请立即撤销并轮换。
语音与消息网关
语音 REST 接口
curl -N -X POST http://localhost:8007/api/v1/chat/voice \
-F 'audio=@recording.wav' \
-F 'sid=voice-demo' \
-F 'tts=true'
响应为 SSE,事件类型:transcript、text_delta、工具事件、audio、error、done。
支持的配置:
- STT:
sensevoice、whisper、openai - TTS:
qwen、kokoro、edge、openai
消息网关
支持企业微信、QQ Bot、钉钉。总开关 GATEWAY__ENABLED=true,各平台需单独配置凭据。
生产使用前请完成平台签名校验、回调地址、权限和消息发送链路测试。
功能状态
| 能力 | 状态 | 说明 |
|---|---|---|
| 非流式/流式聊天 | ✅ | REST、CLI;WebSocket 支持流式事件 |
rag_search |
✅ | Chat API 启动时自动注册 |
| 文本与文件入库 | ✅ | REST 与 CLI 均有入口 |
| 多模态上传 | ✅ | REST /api/v1/rag/upload |
chat / research 模式 |
✅ | 均可使用 RAG 与已连接的 MCP 工具 |
rag 模式 Agent 自主入库 |
⚠️ | 路由声明了 rag_ingest,但 Chat API 默认只注册 rag_search |
media 模式工具 |
⚠️ | 路由已定义,媒体工具未由 Chat API 默认注册 |
| MCP | ⚠️ | 取决于本机命令、依赖、网络和环境变量 |
| PDF/Office 解析 | ⚠️ | 需要 PaddleOCR-VL 服务、pymupdf 或 docling |
| 语音对话 | ⚠️ | 需要可用的 STT/TTS 服务或本地模型 |
| 消息平台网关 | ⚠️ | 企业微信、QQ Bot、钉钉需按平台配置与联调 |
AX8850 运行示例
本节介绍在爱芯(AXERA)AX650N/AX8850 边缘设备上的两种部署方式:
- 分离部署 — 仅模型推理服务运行在 NPU 设备上,通过 OpenAI 兼容接口对外提供;Agentic RAG 主机通过 HTTP 连接这些服务。
- 全量部署 (本节默认方式)— 完整的 Agentic RAG 服务也运行在 NPU 设备上,推理与应用同机完成,数据不出设备。
1. 下载模型与运行组件
可从以下官方资源选择适配 AX650N/AX8850 的模型和运行组件:
- AXERA-TECH Hugging Face 模型仓库
- AXERA-TECH/ax-llm(LLM/VLM/Embedding 推理及 OpenAI 兼容服务)
- AX650 Community Hub(SDK、部署文档和模型示例)
本项目至少需要以下两类模型:
| 服务 | 用途 | 接口要求 | 示例端口 |
|---|---|---|---|
| Chat LLM/VLM | 对话、Agent 推理、图片理解 | OpenAI 兼容 /v1/chat/completions |
8009 |
| Embedding | 文本/图片/音视频向量化 | OpenAI 兼容 /v1/embeddings |
8010 |
可选模型服务:
| 服务 | 用途 | 接口要求 | 示例端口 |
|---|---|---|---|
| SenseVoice | 语音识别 | /v1/audio/transcriptions 或 /asr |
8011 |
| Kokoro TTS | 语音合成 | POST /tts,返回 WAV |
8012 |
| PaddleOCR-VL | PDF/图片 OCR | OpenAI 兼容接口 | 8013 |
2. 准备运行环境
Agentic RAG 主机安装项目依赖。若启用语音、文档和媒体处理,建议安装完整可选依赖:
python -m venv .venv
source .venv/bin/activate
pip install -e ".[voice,documents,media]"
# 压缩音频解码还需要系统提供 ffmpeg
ffmpeg -version
如果只使用文本问答和 RAG,可直接执行:
pip install -e .
3. 启动模型服务
以下命令在 AX8850 设备上执行。将模型目录替换为实际下载路径:
# LLM/VLM 模型
axllm serve /path/to/llm-or-vlm-model --host 0.0.0.0 --port 8009
# Embedding 模型
axllm serve /path/to/embeddings-model --host 0.0.0.0 --port 8010
# SenseVoice 模型
python /path/to/SenseVoice/python/openai_server.py --port 8011
# Kokoro 模型
python /path/to/kokoro/kokoro_svr.py --port 8012
SenseVoice、Kokoro 和 PaddleOCR-VL 的启动命令以各自模型仓库为准。配置前应确认它们分别满足本项目使用的接口约定:
- SenseVoice:优先支持
POST /v1/audio/transcriptions,也兼容POST /asr - Kokoro:支持
POST /tts,接收text、language、voice、speed字段并返回音频字节 - PaddleOCR-VL:提供 OpenAI 兼容的视觉模型接口
4. 配置环境变量
在项目根目录创建或修改 .env。以下示例假设所有模型服务都运行在 192.168.1.100:
# ============ LLM/VLM 服务 ============
DEFAULT_PROVIDER=local
LLM_PROVIDERS__LOCAL__API_BASE=http://192.168.1.100:8009/v1
LLM_PROVIDERS__LOCAL__API_KEY=not-needed
LLM_PROVIDERS__LOCAL__MODEL=your-chat-model
LLM_PROVIDERS__LOCAL__VISION_MODEL=your-vision-model
LLM_PROVIDERS__LOCAL__MAX_TOKENS=4096
LLM_PROVIDERS__LOCAL__TEMPERATURE=0.7
# ============ Embedding 服务 ============
EMBEDDING__PROVIDER=local
EMBEDDING__API_BASE=http://192.168.1.100:8010/v1
EMBEDDING__API_KEY=not-needed
EMBEDDING__MODEL=AXERA-TECH/jina-embeddings-v5-omni-nano-retrieval-AX650-P128-CTX2047
EMBEDDING__MODEL_TYPE=multimodal
EMBEDDING__DIM=768
EMBEDDING__BATCH_SIZE=4
# Milvus Lite 的向量维度必须与 Embedding 输出一致
MILVUS__DIM=768
# ============ 可选:SenseVoice STT ============
VOICE__STT_PROVIDER=sensevoice
VOICE__STT_MODEL=sensevoice
VOICE__STT_API_BASE=http://192.168.1.100:8011
VOICE__STT_LANGUAGE=auto
VOICE__SAMPLE_RATE=16000
# ============ 可选:Kokoro TTS ============
VOICE__TTS_PROVIDER=kokoro
VOICE__TTS_MODEL=kokoro
VOICE__TTS_API_BASE=http://192.168.1.100:8012
VOICE__TTS_LANGUAGE=zh
VOICE__TTS_VOICE=zf_xiaoyi
VOICE__TTS_SPEED=1.0
VOICE__TTS_RESPONSE_FORMAT=wav
# ============ 可选:PaddleOCR-VL ============
OCR__ENABLED=true
OCR__API_BASE=http://192.168.1.100:8013/v1
OCR__MODEL=PaddlePaddle/PaddleOCR-VL
OCR__API_KEY=not-needed
OCR__MAX_PAGES=50
# ============ Agentic RAG Web 服务 ============
API__HOST=0.0.0.0
API__PORT=8007
注意事项:
LLM_PROVIDERS__LOCAL__MODEL必须与模型服务实际暴露的模型名一致。这里使用已注册的localProvider 连接 AX8850 上的 OpenAI 兼容服务,无需新增 Provider 类型。- 纯文本模型不支持图片输入时,将
VISION_MODEL配置为单独的 VLM;如果服务中没有视觉模型,请留空并避免使用图片理解功能。 EMBEDDING__DIM和MILVUS__DIM必须一致。更换向量维度后,需要备份并删除旧的workspace/milvus_lite.db,再重新入库。- 使用多模态 Embedding 时建议设置
EMBEDDING__MODEL_TYPE=multimodal。 - 如果 AX8850 上只启动了核心的 LLM 和 Embedding 服务,可删除或注释 STT、TTS、OCR 配置。
5. 启动项目
# 首次运行或前端发生变化时构建 Web UI
cd frontend && npm install && npm run build && cd ..
# 启动后端及 Web UI
python -m agentic_rag serve --host 0.0.0.0 --port 8007
- Downloads last month
- -

