深度指南:从文档清洗、混合检索到部署实战)
人工智能大模型RAGAI 应用医疗健康数据分析【免费下载链接】agent该项目已停止维护请参考https://gitcode.com/ModelEngine/nexent项目。 致力于汇聚利用 ModelEngine 能力的创新应用开发和推广高质量的应用程序旨在创建一个强大的多智能体架构将各种功能整合为无缝的用户体验。项目地址https://gitcode.com/ModelEngine/agent点击查看免费下载本项目是一套面向企业知识场景的智能问答 RAG 应用代码位于仓库ask_question_app/目录整体分为**用户面agent与管理面admin**两部分管理面负责深度文档数据清洗、抽取与知识管理用户面负责图文问答与 RAG 溯源。本文围绕 ask_question_app/README.md 展开完整还原其部署步骤并结合仓库源码深入讲解十大 RAG 能力的实现原理帮助你快速上手并二次开发这套可落地的 RAG 系统。一、项目总览用户面与管理面的分工管理面admin面向知识运营人员提供文档上传、解析、切片、QA 抽取、切片编辑、关键词标注、知识库管理等能力。对应目录为 ask_question_app/admin后端基于 Flask前端基于 UmiJS React。用户面agent面向最终用户提供图文对话、流式问答、RAG 溯源引用、同义词改写、意图分类等能力。对应目录为 ask_question_app/agent同样采用 Flask UmiJS 架构。从源码结构看管理面与用户面共享同一套 RAG 基础设施ES 检索、向量模型、解析器、MCP 插件管理面产出高质量切片与知识库用户面在问答时动态召回这些知识并生成带引用的回答形成“清洗 → 建库 → 检索 → 生成”的完整链路。二、十大核心 RAG 能力拆解原文档明确了本应用提供的十项 RAG 能力以下逐条结合源码说明其实现位置与原理。2.1 多格式非结构化数据清洗切片支持txt、docx、html、json、markdown、pdf、excel、pptx等丰富文件类型的数据清洗切片从各类复杂格式的非结构化数据中提取文档信息。对应的解析器位于 ask_question_app/admin/deepdoc/parser/每种格式一个独立 parser如pdf_parser.py、docx_parser.py、excel_parser.py、ppt_parser.py等并由 admin/plugins 目录下的pdf_chunk.py、docx_chunk.py、excel_chunk.py等插件完成切片动作。管理面 chunk_app.py 暴露了切片的增删改查接口支持对切片进行人工编辑/set、启停用/switch、删除/rm与手工创建/create。2.2 智能切片避免知识细碎传统固定长度切片容易把完整语义截断本应用提供基于 LLM 的智能切片插件实现位于 ask_question_app/admin/plugins/smart_chunk.py。其核心思路是按page_length4500、tmp_length2300的分段步长把长文档切为可送入 LLM 的片段split_content通过 Prompt 指导模型按语义分段问答类内容一个问题与其回答切成一段、按最小标题层级切分、正文与版权信息等不同表达分开getPrompt每段以------分隔分段结果经dup_remove与上一批结果做前缀去重避免相邻批次产生重复内容生成参数固定为temperature0、top_p0.3、max_tokens5120保证输出稳定。2.3 混合 RAG多路召回 重排序 相关性判断用户面问答的检索编排在 ask_question_app/agent/api/db/services/rag_service.py 中实现核心流程如下多路召回retrieve()使用ThreadPoolExecutor并发执行es_search关键词检索 知识分片 向量匹配与qa_searchQA 对检索将两路结果合并进 chunks相关性判断relation_check()调用RELATION_CHECK插件逐条判断召回知识与用户问题是否相关过滤掉不相关的召回重排序rerank()调用RERANK插件对通过相关性判断的知识做精排知识组装query_knowledge()将最终知识按max_tokens组装进 Prompt。问答主流程在 ask_question_app/agent/api/db/services/dialog_service.py 的chat()中通过insert_citations把引用序号##N$$注入回答最终由decorate_answer把引用与来源文档信息doc_aggs结构化返回给前端用户面 conversation_app.py 的/completion接口以 SSEtext/event-stream流式输出回答。2.4 基于 MCP 协议的三方工具接入支持本地配置 RAG 插件基于 MCPModel Context Protocol协议快速集成三方工具知识召回能力。插件统一放置在agent/plugins/与admin/plugins/目录下均基于mcp.server.FastMCP实现并通过mcp.run(transportstdio)以标准输入输出方式被宿主进程拉起。示例插件包括kb_retrieval_keyword.py业务关键词检索插件向 ES 查询语句追加term过滤条件synoym_replacement.py同义词替换插件qa_retrieval.pyQA 对检索out_retrieval.py外部知识召回。插件注册与调用由 api/plugins/client_manage.py 统一管理dialog_service.py中通过exec_plugin_json(ToolName.SYNONYM_REPLACEMENT, ...)等方式调用。2.5 追根溯源召回结果会展示文本、图片等知识来源信息。chunk_app.py的列表接口返回每个切片的doc_id、docnm_kwd、image_id、positions字段conversation_app.py的/get与/completion会把引用切片转换为document_id、document_name、image_id、positions等结构化字段返回问答结果可靠可追溯。2.6 行业术语配置与问题改写支持行业术语配置与管理理解专业领域术语并对问题进行改写。实现位于 ask_question_app/agent/api/db/services/synoym_service.pyreplace_synonym_query用户面conversation_app.py还单独暴露了/replace_synonym接口用于把查询文本中的同义词替换为标准词。该替换在dialog_service.chat()的检索前阶段执行替换后的提问再进入多路召回。2.7 意图识别与问题分类支持意图识别和问题分类根据用户意图精准召回知识。dialog_service.chat()中会先判断llm_id对应模型类型llm_id2llm_type若为image2text则走图文理解链路同时根据field_map判断知识库是否配置了结构化字段若有则走use_sql()的 SQL 检索链路把问题转换为 ES SQL 查询并组织为 Markdown 表格回答实现“精准召回”。2.8 图文回答切片时保留图片信息回答中支持图文并茂。dialog_service.decorate_answer()中add_images_from_reference()会把回答中的引用序号替换为img src/v1/document/image/{image_id}图片标签chunk_app.py的切片列表接口也会在切片内容后拼接\nbrimg src{url}图片通过/v1/document/image/{image_id}接口访问。2.9 模型动态接入大语言模型及向量模型支持动态配置。管理面与用户面的 api/settings.py 通过init_settings()从配置中读取user_default_llm内置了 Tongyi-Qianwen、OpenAI、Azure-OpenAI、ZHIPU-AI、Ollama、Moonshot、DeepSeek、VolcEngine、BAAI 等模型工厂的默认模型映射例如通义千问chat_modelqwen-plus、embedding_modeltext-embedding-v2、image2text_modelqwen-vl-max、asr_modelparaformer-realtime-8k-v1OpenAIgpt-3.5-turbotext-embedding-ada-002gpt-4-vision-previewDeepSeekdeepseek-chatBAAIBAAI/bge-large-zh-v1.5向量BAAI/bge-reranker-v2-m3重排序。模型名统一以模型名工厂名的形式拼接如qwen-plusTongyi-Qianwen在问答时由LLMBundle按租户绑定具体的 chat、embedding、rerank 模型实例。2.10 文档切片过程及进度可视化支持文档解析、图片提取、QA 提取等结果可视化。管理面提供切片列表/chunk/list、QA 列表/chunk/qa/list、知识图谱与思维导图/chunk/knowledge_graph等接口前端 admin/web/src/pages/dataset 与 admin/web/src/pages/add-knowledge 页面负责展示切片过程与解析结果。三、环境准备与基础服务部署本项目基于 Linux ARM 架构运行部署前需准备一台安装好 Docker 的服务器。3.1 安装 Docker 与基础工具# 安装 Docker略 # 安装 libreoffice文档解析依赖 apt install libreoffice3.2 启动基础服务需要预先启动三个基础中间件minio对象存储、es全文检索、mysql元数据存储访问端口分别为 9200、1200、5455按 README 描述。注意ES 版本需为 8.0.0 及以上且需与 Python 下载的 es 依赖版本保持一致否则索引与检索可能不兼容。仓库默认配置参见 ask_question_app/admin/conf/service_conf.yaml其中ragflow.http_port默认为 9380MySQL 与 MinIO 均以容器主机名modelengine-iq-mysql、modelengine-iq-minio:9000互访ES 地址为http://modelengine-iq-es-01:9200。实际部署时请按你的服务器环境修改hosts、端口与账号密码。3.3 拉取 Python 镜像docker pull python:3.10.163.4 代码挂载并启动容器将工程ask_question_app放到服务器/opt目录下执行以下命令把agent、admin两个服务端代码与nltk_data语料挂载进容器并启动docker run -it --entrypoint/bin/bash -u root \ --hostnameask_question_app \ --ipchost --name ask_question_app \ --networkhost \ --privileged \ -v /opt/ask_question_app/agent/:/opt/agent \ -v /opt/ask_question_app/admin/:/opt/admin \ -v /opt/ask_question_app/nltk_data/:/root/nltk_data \ python:3.10.16若启动后未进入容器可执行docker exec -it ask_question_app /bin/bash进入容器。3.5 安装 Python 依赖指定镜像源为清华源或阿里云安装服务启动必需的 Python 依赖pip config set global.index-url https://mirrors.aliyun.com/pypi/simple \ pip config set install.trusted-host mirrors.aliyun.com \ pip install pip -U \ pip install -r /opt/admin/requirements.txt \ pip install -r /opt/agent/requirements.txt两个服务的依赖清单分别见 ask_question_app/admin/requirements.txt 与 ask_question_app/agent/requirements.txt。四、启动后端与前端服务4.1 启动后端服务管理面与用户面分别以后台进程方式启动日志分别输出到admin.log与agent.log# 启动 admin管理面服务 python -u /opt/admin/api/ragflow_server.py admin.log 21 # 启动 agent用户面服务 python -u /opt/agent/api/ragflow_server.py agent.log 21 两个服务在启动时都会执行init_settings()读取service_conf.yaml中的数据库与 LLM 配置、初始化 ES 连接并创建索引管理面还会创建ragflow_QA_*QA 索引随后注册各api/apps/下的 Flask 路由蓝本。4.2 安装 Node.js本项目作者使用 Node.js 版本 20.18.1、npm 版本 10.8.2执行以下命令安装curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs4.3 构建前端构建前需要把admin与agent工程中 .umirc.ts 文件里proxy - target的 IP 地址修改为自己服务器对应的 IP。两个前端的代理配置分别指向各自后端admin 代理http://127.0.0.1:30009/agent 代理http://127.0.0.1:30008/context均为/api与/v1并把 127.0.0.1 替换为实际服务器 IP。cd /opt/admin/web npm install npm run build cd /opt/agent/web npm install npm run build构建完成后浏览器输入服务器ip:8088访问智能问答用户面agent浏览器输入服务器ip:8089访问智能问答管理面admin。前端路由与页面入口见 admin/web/src/routes.ts、admin/web/src/app.tsx 及 agent/web/src/routes.ts、agent/web/src/app.tsx。五、源码视角一次问答的完整调用链以用户面一次普通问答为例结合源码梳理完整链路相关实现集中在 ask_question_app/agent/api/db/services/dialog_service.py 的chat()入参与校验conversation_app.py的/completion接收conversation_id与messages校验最后一条消息来自用户绑定模型按知识库确认统一的 embedding 模型按llm_id确认 chat 模型类型普通 chat 或 image2text多轮改写若配置了refine_multiturn调用full_question()基于对话历史生成完整问题相对日期自动转绝对日期同义词替换exec_plugin_json(ToolName.SYNONYM_REPLACEMENT, ...)调用同义词插件改写问题多路召回RagService.query_knowledge()内部依次执行es_search关键词 分片 向量qa_searchQA 对再经relation_check相关性过滤与rerank重排序Prompt 组装把知识拼接进 system prompt 的{knowledge}参数超长时通过message_fit_in截断到max_tokens * 0.97流式生成默认以 SSE 流式返回增量回答is_deep_seek时走deep_seek()思维链流式输出灰色推理过程 正文is_deep_search时走多智能体AgentService.run深度搜索引用与图文decorate_answer()通过insert_citations把引用标记##N$$插入回答再把图片引用替换为img标签最终返回answer reference含chunks与doc_aggs并统计各阶段耗时。六、基于 MCP 的插件二次开发若需扩展三方工具召回能力可参考agent/plugins/下已有插件模式以 synoym_replacement.py 为最小示例from mcp.server.fastmcp import FastMCP mcp FastMCP(synonym_replacement) mcp.tool(synonym_replacement) async def synonym_replacement(questions): return {replaced_questions: [replace_synonym_query(q) for q in questions]} if __name__ __main__: mcp.run(transportstdio)要点每个插件是一个独立的FastMCP应用以stdio方式运行通过mcp.tool(工具名)注册工具宿主进程以ToolName枚举引用见 api/plugins/consts.py插件在 api/plugins/client_manage.py 中统一拉起与调用可被dialog_service、rag_service等多个环节复用。七、声明与致谢本项目/代码的部分功能实现基于 RagFlow 开源框架RagFlow 的代码遵循其原始开源许可证请参考其官方仓库 LICENSE 文件在此对 RagFlow 开发团队及社区贡献者表示感谢。更多仓库级细节可继续阅读 README.md 与本目录下的 docs/references/http_api_reference.mdHTTP API 参考文档。八、常见问题与部署建议ES 版本不一致README 明确要求 ES 为 8.0.0 及以上且 Python 端 es 依赖版本需与其一致否则ESConnection.createIdx建索引可能失败模型密钥配置代码中检测到回答包含invalid key/invalid api时会提示在「用户设置 → 模型服务商 → API-Key」中配置密钥端口映射前端8088用户面、8089管理面与后端代理端口30008、30009需在防火墙与.umirc.ts中保持一致多知识库 embedding 一致性chat()会校验所有知识库使用同一 embedding 模型否则直接返回错误提示因此建库时应统一向量模型。赞分享人工智能大模型RAGAI 应用医疗健康数据分析【免费下载链接】agent该项目已停止维护请参考https://gitcode.com/ModelEngine/nexent项目。 致力于汇聚利用 ModelEngine 能力的创新应用开发和推广高质量的应用程序旨在创建一个强大的多智能体架构将各种功能整合为无缝的用户体验。项目地址https://gitcode.com/ModelEngine/agent点击查看免费下载相关推荐Kiln RAG系统实现原理构建智能文档检索与问答应用Kiln RAG系统实现原理构建智能文档检索与问答应用 Kiln作为一款强大的AI开发工具其核心功能之一就是RAG检索增强生成系统实现。通过Kiln R人工智能AI 应用AI 评测RAG微调提示工程开发工具桌面应用MLOpsSkill Seekers × Weaviate 集成实战从文档抓取到混合检索 RAG 流水线Skill Seekers × Weaviate 集成实战从文档抓取到混合检索 RAG 流水线 本文是 Skill Seekers 项目中 Weaviate人工智能AI 应用AI 技能RAGMCP 服务网页爬虫基于 Atomic Agents 构建 RAG 智能问答机器人从文档分块到语义检索的完整实战指南基于 Atomic Agents 构建 RAG 智能问答机器人从文档分块到语义检索的完整实战指南 导读 本文以 rag chatbot 示例 https://AI AgentAgent 框架MCP 服务后端上一篇G-Helper 完整指南三步配好 ROG 笔记本的免费风扇曲线下一篇SilentPatch 使用指南GTA III / VC / SA 的崩溃与卡顿一次修干净创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考