Today AI 企业知识问答与质检中台
一个面向企业知识库和金融财报场景的多工具 Agent + RAG 项目。当前仓库已经落地了前台智能问答、后台知识资产治理、坏案例回收、AI 自动巡检与黄金问答沉淀等能力。
Today AI 的目标不是只做一个聊天机器人,而是做一套可运营、可追溯、可持续修复的企业知识问答系统。
当前项目包含两条主线:
- 前台问答链
基于
LangGraph把企业知识库、实时行情、联网搜索和金融 SQL 查询统一成一个多工具问答入口。 - 后台治理链 提供文档上传、异步切片、人工审核、发布入库、坏案例回收、AI 自动巡检、人工修复和 BI 看板。
前台主接口是 POST /api/v1/chat,当前支持 4 类工具能力:
enterprise_kb企业知识库与上传 PDF 检索finance_market实时行情查询web_search联网搜索公开新闻、政策、公告finance_sql结构化金融指标查询与对比
系统会先根据当前知识库启用的插件,再根据问题意图进行预路由,最后由 LangGraph 驱动模型执行工具调用。
适合的问题类型包括:
- 企业制度、FAQ、历史报告、上传 PDF 的静态知识问答
- 最新股价、实时行情
- 最新新闻、最近公告、外部动态
- 同比、环比、对比、平均、聚合等结构化金融问题
项目保留了 POST /api/v1/kb_chat 这条纯知识库链路,用于:
- 后台 Ground Truth 抽证据
- 自动巡检判案
- 需要绕开 LangGraph 多工具编排的场景
前台支持通过 POST /api/v1/upload_temp 上传临时 PDF。
上传后的文档只绑定当前 session_id,不会直接进入正式知识库,适合临时问答和快速验证。
知识库检索不是简单向量搜索,而是:
- 向量召回
- 词法召回
- 混合重排
当前实现基于 LlamaIndex + Chroma + 自定义 RAG 逻辑,并针对中文财报指标问答做了业务增强,包括:
- 中文 query token 化
- BM25 风格词法打分
- RRF 融合
- 财报表格和指标字段 boost
- 财务噪声 penalty
前台回答不是只有一段文本,还会返回:
sources展示 KB 证据、网页来源、行情来源或 SQL 来源tool_trace展示当前问题调用了哪个工具、输入摘要和工具结果摘要
这使系统具备基础的可解释性和排障能力。
后台支持完整的文档治理流程:
- 上传文档
- 异步解析和切片
- 查看 chunk 列表
- 手工修改 chunk
- 废弃错误 chunk
- 审核通过后发布入库
发布后,文档的有效 chunk 会同步进入向量库。
后台支持:
- 创建租户
- 创建知识库
- 绑定知识库所属租户
- 配置知识库启用的插件
- 基础访问控制和角色校验
后台支持基础连接器能力:
- 创建连接器
- 查看连接器列表
- 手动触发同步
当前连接器主要面向本地目录和单文件导入场景。
前台支持点赞/点踩,点踩会将坏案例写入 bad_cases_staging.json,同时支持撤销点踩和去重幂等。
后台支持:
- 查看 bad cases
- 人工修复
- 忽略误报
- AI 一键自动巡检
后台提供 POST /admin/api/bad_cases/auto_heal,用于对 bad case 做自动巡检和尝试修复。
当前逻辑会尽量先做 Ground Truth 抽取,再结合工具类型和问题性质分流:
- 静态知识缺失 尝试自动修复
- 动态问题 归档,不强行修知识库
- 无把握案例 转人工审核
修复成功的结果会写入 golden_qa,形成高质量纠偏样本池。
前台会记录搜索行为,包括:
- query
- session_id
- latency
- kb_id
- tenant_id
后台可查看:
- 搜索总量
- 平均延迟
- 搜索日志明细
app_frontend_network.py用户问答界面,默认运行在7860admin_frontend.py后台管理界面,默认运行在7861
app_backend.py前台问答与纯 KB API,运行在8000admin_backend.py后台治理、上传、反馈、自动巡检与 BI API,运行在8001
core/graph.py基于LangGraph的请求级 Agent 编排core/agent_tools.py请求级工具封装、sources 汇总和 tool_trace 记录
core/chat_service.py纯 KB 问答服务tools/rag_tool.pyRAG 检索、混合重排、证据封装core/document_pipeline.py文档读取、切片、chunk payload 构造
knowledge_draft.db主业务 SQLite,存文档、chunk、知识库、租户、bad case、golden_qa、search logs、connectorsfinance_data.db金融 SQL 示例库,当前用于结构化财务问题chroma_db/Chroma 本地向量库
在当前项目里,SQLite 和 Chroma 是分层协作关系:
- SQLite 负责业务真相 存文档、chunk、发布状态、租户、反馈、golden_qa 和结构化金融指标
- Chroma 负责语义检索 存 chunk 向量、文本和 metadata,用于向量召回
查询时:
- SQLite 提供精确状态和词法候选
- Chroma 提供向量候选
- 最后在 RAG 层做融合和重排
简单说:
- SQLite 解决“系统里到底有什么”
- Chroma 解决“语义上最像什么”
.
├── app_backend.py # 前台 API
├── admin_backend.py # 后台 API
├── app_frontend_network.py # 前台 Gradio
├── admin_frontend.py # 后台 Gradio
├── core/
│ ├── graph.py # LangGraph 编排
│ ├── agent_tools.py # 请求级工具封装
│ ├── chat_service.py # 纯 KB 服务
│ ├── chat_models.py # 请求/响应模型
│ ├── document_pipeline.py # 文档解析和切片
│ ├── db_schema.py # 主业务库表结构
│ ├── plugin_registry.py # 插件注册与绑定
│ └── ...
├── tools/
│ ├── rag_tool.py # RAG 检索
│ ├── price_tool.py # 行情工具
│ ├── web_search_tool.py # 联网搜索工具
│ ├── sql_tool.py # 金融 SQL 工具
│ └── ...
├── data/ # 本地种子文档
├── chroma_db/ # Chroma 向量库
├── knowledge_draft.db # 主业务 SQLite
├── finance_data.db # 金融 SQL 示例库
├── bad_cases_staging.json # bad case 草稿箱
├── dynamic_cases_archive.json # 动态问题归档
└── init_sql_db.py # 初始化 finance_data.db
pip install -r requirement.txt项目默认使用 OpenAI 兼容接口,至少需要配置:
api_key="your_api_key"
base_url="https://api.siliconflow.cn/v1"
model="Qwen/Qwen2.5-7B-Instruct"如果要启用后台 AI 自动巡检里的 LongCat 修复链,还需要:
LONGCAT_API_KEY="your_longcat_api_key"如果你要验证 finance_sql 工具,请先执行:
python init_sql_db.py建议分别打开 4 个终端启动服务:
python -X utf8 app_backend.py
python -X utf8 admin_backend.py
python -X utf8 app_frontend_network.py
python -X utf8 admin_frontend.py默认地址:
- 前台 API:
http://127.0.0.1:8000 - 后台 API:
http://127.0.0.1:8001 - 前台 Gradio:
http://127.0.0.1:7860 - 后台 Gradio:
http://127.0.0.1:7861
后台 Gradio 当前带基础认证:
username: admin
password: 123456
注意:
当前仓库里的 run.sh 只是顺序命令列表,不是 Windows 下真正的多进程启动器。Windows 环境下建议手动分终端启动,或自行改成 PowerShell / bat 脚本。
POST /api/v1/chat多工具 Agent 问答POST /api/v1/kb_chat纯知识库问答POST /api/v1/upload_temp上传临时 PDF
POST /admin/api/upload上传文档并异步解析GET /admin/api/docs文档看板GET /admin/api/docs/{doc_id}/chunks获取文档切片PUT /admin/api/chunks/{chunk_id}修改 chunkDELETE /admin/api/chunks/{chunk_id}废弃 chunkPOST /admin/api/docs/{doc_id}/publish发布文档入库GET /admin/api/bad_cases读取坏案例POST /admin/api/bad_cases/auto_heal启动 AI 自动巡检POST /admin/api/bad_cases/{case_id}/fix人工修复 bad caseGET /admin/api/analyticsBI 看板
- 不是单一路由到 RAG,而是基于
LangGraph做多工具 Agent 编排 - 不是只做向量检索,而是做了混合召回和重排
- 回答不是黑盒,支持
sources和tool_trace - 不是只收集反馈,而是打通了 bad case 到
golden_qa的修复闭环 - 不是只会问答,还具备文档治理、插件绑定、连接器和运营看板
finance_sql当前主要是一个示例结构化金融工具,默认数据集中只初始化了catl_finance表- 自动巡检强依赖大模型与 API 配置,未配置
LONGCAT_API_KEY时无法完整跑通 LongCat 修复链 - 前端右侧溯源面板当前显示的是最近一轮问答的
sources + tool_trace - 当前系统更适合企业文档、财报与结构化金融问题,不是通用互联网问答产品
可以这样概括这个项目:
基于 LangGraph、LlamaIndex、Chroma 和 FastAPI 搭建企业知识问答与质检中台,实现多工具 Agent 编排、混合 RAG 检索、来源溯源、坏案例回收、AI 自动巡检和黄金问答沉淀。