AI知识库集问答
框架图
架构图(模块视角)
当前真实生效路径(精简图)
“知识库”模块,当前实现可以概括为:文档管理 + 上下文拼接式问答(非RAG检索库),主问答链路是 单智能体调用 DeepSeek。
先说结论(你关心的点)
用了哪个智能体
- 问答时实际使用的是 AutoGen 的
AssistantAgent,名称是knowledge_base_qa(在backend/app/api/v1/endpoints/knowledge_base.py里创建)。- 代码里虽然 import 了
RagRetrievalAgent、StreamResponseCollector、RagRetrievalRequest/Response,但当前文件内没有实际调用,属于“预留/未接入”。调用了哪些模块
- 路由与业务:
backend/app/api/v1/endpoints/knowledge_base.py- 文件解析:
app.utils.file_parser(parse_pdf/parse_docx/parse_xmind/extract_text_from_xmind)- 数据库模型:
KnowledgeBaseDocument、KnowledgeBaseQA、Requirement、TestCase- LLM客户端:
app.core.llms.get_deepseek_model_client- 前端API层:
frontend/src/api/knowledgeBase.ts用了什么大模型
- 当前问答统一走
get_deepseek_model_client(timeout=20),底层模型是deepseek-chat。- 应用层又包了一层
asyncio.wait_for(..., timeout=25),避免前端长时间“正在生成”。运行机制(知识库问答)
POST /api/v1/knowledge-base/qa的处理逻辑是:
- 从数据库取三类内容:
- 已上传知识库文档(
KnowledgeBaseDocument)- 已审批需求(
Requirement)- 测试用例的源文件路径(
TestCase.source_file_path)- 解析/抽取文本后做上下文构建:
- 关键词提取(中文词组、英文缩写、业务术语、数字)
- 文档片段筛选与截断(总上下文预算
KB_QA_MAX_CONTEXT = 6000)- 组装
system_message + user_message(context+问题)。- 用
AssistantAgent(knowledge_base_qa)调 DeepSeek。- 返回答案,并将问答记录写入
KnowledgeBaseQA。
