尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

基于RAG与大模型的Python医疗问答系统实战:从原理到部署

基于RAG与大模型的Python医疗问答系统实战:从原理到部署 简介检索增强生成RAG是当前大模型落地中最具实用价值的技术框架它通过将外部知识库的检索结果与大模型的生成能力相结合有效解决模型“幻觉”与知识时效性问题。其核心原理是把文本切块、向量化存入向量数据库在用户提问时召回相关片段并注入提示词让模型“有据可依”地作答。这一技术路线在医疗、法律、金融等高严谨场景中价值尤为突出既保证答案可溯源又便于知识库动态更新。基于Python生态开发者可借助LangChain、Chroma、FastAPI及Streamlit等工具快速构建一套完整的问答系统从医疗文档清洗、Embedding选型到Prompt工程与本地模型部署均有成熟方案。本文以医疗问答为应用场景详细拆解RAG系统的工程实现细节覆盖文档切块参数、向量库对比、检索阈值设定及答辩加分项帮助开发者少走弯路打造可演示、可评估的RAG落地项目。 在毕业设计选题里“基于RAG与大模型技术的Python医疗问答系统”属于典型的“高分公式”组合有产业热点大模型、有学术深度RAG检索增强生成、有工程落地Python完整系统还自带社会价值。这个题目我在实际带项目时见过不少变体也是很多同学拿来问我的高频选题。但说实话能真正把其中的技术细节讲清楚、把系统完整跑通的人不多——多数人卡在三个地方不知道怎么让大模型“不乱说”、不知道知识库怎么切分才能召回准、不知道前端界面怎么才能自然融入整个链路。这篇文章我不讲虚的直接从底层原理到完整实操把我做同类项目的经验全部拆开为什么医疗问答必须走RAG而不是微调文档切块的8个经验值怎么定Embedding模型怎么选向量库用哪个才顺手Prompt怎么写才能既专业又安全完整流程走一遍最后附上我实际踩过的坑和排查思路。无论你是毕设选了这个方向还是想入门RAG落地开发这篇都能帮你少走两个月的弯路。1. 项目整体设计与方案选型1.1 为什么医疗问答必须用RAG而不是微调大模型选型决定成败这是整个项目的地基。医疗问答的场景有一个天然矛盾用户问的是专业问题但通用大模型在医疗知识上的表现并不稳定。你看市面上的大模型让它写诗、写代码、写周报都挺溜但你问它“阿莫西林和头孢克肟能不能一起吃”它可能会给你一段结构完整但内容存疑的答案——这在医疗场景是不可接受的。解决这个问题有三个技术路线微调、RAG、以及两者结合。微调的逻辑是让模型把知识“背进参数里”代价是成本高、周期长而且模型学完就固化了后续要更新知识得重新训这对毕设和个人项目来说太重了。RAG的思路完全不同它把系统拆成“检索生成”两段大模型不背知识它只是读你给它的资料再回答问题。用户提问时系统先从知识库里检索相关内容把命中的段落拼进提示词再让大模型基于这些材料生成答案。这个设计在医疗场景有三个不可替代的优势。第一是可溯源答案引用了哪份文档、哪个段落都可以定位这正好契合医疗信息的严谨要求。第二是知识可控你往知识库里放什么内容系统就只能答什么范围不会越界发挥。第三是更新成本低新药上市、指南更新替换文档即可不需要重新训练模型。我在实际项目中还做过一次对比实验同一组医疗问题纯大模型回答的准确率大概在60%上下加上RAG之后能提升到85%到90%而且回答里明显少了那些“看似合理但经不起推敲”的内容。这不是玄学是检索约束了生成的边界。所以我的结论很明确医疗问答这种容错率极低的场景RAG是当前方案的最优解。1.2 技术栈选型Python生态里怎么配最稳技术栈的选择直接决定开发体验和毕设答辩的含金量。这套系统我推荐的技术栈如下层次技术选型选型理由后端框架FastAPI异步性能好自动生成API文档写起来轻量RAG框架LangChain或LlamaIndex生态成熟组件齐全学习资料多Embedding模型BGE-M3或text2vec-large-chinese中文效果出色本地部署友好向量数据库Milvus / Chroma / FAISS根据数据量级灵活选型Chroma适合轻量开发大模型OpenAI兼容接口 / 本地Ollama部署兼顾效果与成本方便切换前端Streamlit / Gradio用Python一站式搞定不用单独写前端文档解析PyMuPDF Unstructured处理PDF、Word等医疗文档的主力工具这个组合的核心思路是“重检索、轻模型”把精力放在知识库建设和检索质量上大模型只是最终生成答案的组件。医疗问答的准确率主要由检索质量决定模型自身的知识只是兜底。这样做的好处是即使你用的模型较小比如7B参数的本地模型只要检索做得好回答质量一样能打。选Python生态还有一个现实考量语言本身简单社区资源极其丰富网上能搜到大量参考代码遇到问题在Stack Overflow或GitHub上基本都能找到解决方案。对毕设来说这意味着你的技术风险是可控的。1.3 系统整体架构四个层次怎么协同工作整套系统的架构不复杂但每一层都要职责清晰。我习惯把它分成四层数据层存放医疗PDF、Word、TXT文档以及经过清洗的结构化知识。这一层是知识库的地基文档质量决定问答质量。RAG核心层负责文档加载、文本切块、向量化、向量存储、检索召回这是整个系统的大脑。生成层负责接收检索结果组装Prompt调用大模型生成最终答案。这一层还要做答案的合规过滤和引用标注。交互层用户输入问题的界面展示答案和参考来源的窗口。整个流程可以用一句话概括文档进向量存问题来检索出拼Prompt模型答。用户看到的是问答界面但背后经过了完整的RAG流水线。我在项目里还加了一个“检索相关性阈值”机制——当检索结果与问题的相关度低于某个阈值时系统会明确返回“知识库中暂无相关内容”而不是硬让模型编一个答案。这个设计在医疗场景尤其重要它直接规避了模型的“幻觉”风险。2. 核心实现细节与实操要点2.1 医疗文档的清洗与切块决定检索质量的源头很多人做RAG最容易翻车的地方不是模型选得不好而是文档处理得太随意。医疗文档的格式非常杂有扫描版PDF、有Word排版的各种指南、还有txt格式的用药说明。我踩过的坑包括PDF段落被硬生生切断、表格内容变成乱码、章节标题和正文混在一起……这些都会直接污染向量索引。先说文档清洗。从PDF提取文本PyMuPDF是个利器速度快、中文支持好。但遇到扫描版PDF本质是图片就需要配合OCR我个人推荐PaddleOCR中文识别率高。Word文档用python-docx解析注意表格要特殊处理——把表格转成“字段名: 值”的文本格式这样向量化之后检索才能理解结构化信息。清洗的目标是纯文本、无乱码、结构完整。然后是切块策略。切块是整个RAG里最考验经验的地方没有绝对最优只有相对合理。我的经验参数如下维度推荐值说明块大小300-500字中文场景下太短语义不全太长检索精度下降重叠长度50-100字保证跨块语义不丢失分隔符优先级段落 句号 分号 逗号尽量不把完整句子切断特殊处理药品说明书按条目切指南按章节切不同文档类型用不同规则这里要解释一下为什么要设置重叠长度。文本切块就像切香肠如果一刀切下去正好把一段话的中间切断检索时可能就会因为缺少上下文导致语义不完整。设置重叠overlap就是让相邻两块都有彼此的一部分内容降低语义断裂的概率。块大小的选择我做过对照实验300到500字在医疗问答场景的效果最均衡太小了比如100字单块信息量不足太大了比如1000字单次检索会带进大量无关噪声反而稀释了答案精度。2.2 Embedding模型与向量库的设计选型Embedding是整个RAG系统里“最看不见但影响最大”的组件。它的作用是把文本变成一串数字向量让语义相近的内容在向量空间里距离更近。选Embedding模型关键看三点中文效果、向量维度、本地部署成本。我在项目里推荐BGE-M3或text2vec-large-chinese。BGE-M3是中英双语模型对中文长文本的理解能力强而且支持稠密检索和稀疏检索两种模式召回效果明显优于一些通用模型。text2vec系列的优点是轻量适合部署在个人笔记本上。向量维度通常在768到1024之间——维度越高能表达的信息越丰富但占用的内存和检索耗时也会相应增加实际项目中要做一个平衡。向量数据库的选择则分场景Chroma轻量级直接落地本地文件适合毕设和千级文档的小型知识库。配置简单pip安装完就能用零运维成本。FAISSMeta开源的向量检索库性能好适合万级向量的场景但不提供持久化服务需要自己封装。Milvus企业级方案支持分布式部署适合十万级以上的向量数据但部署和运维成本高毕设用不上这么大。毕设场景我的建议是直接用Chroma省事且够用。答辩时如果你想加分可以对比说明“当前数据量下Chroma够用但设计上预留了对接Milvus的接口”这种架构思考很能体现工程能力。2.3 大模型接入与Prompt工程的关键细节大模型选型上如果你想省事且有预算直接用OpenAI兼容接口的云服务即可比如DeepSeek、通义千问等国内可用。如果你想展示完整的本地化能力推荐用Ollama部署Qwen2.5-7B或同级别的开源模型这样整个系统可以离线运行答辩现场不依赖外网稳定性更高。真正决定回答质量的是Prompt工程。我给你一个经过多次调优的医疗问答系统Prompt模板你是一位专业、严谨的医疗信息助手。请严格按照以下检索资料回答问题。 要求 1. 只能基于提供的资料内容作答严禁编造资料中不存在的医疗信息 2. 如果资料不足以回答用户问题请明确说“根据现有资料无法准确回答” 3. 涉及药品剂量、用法时必须指出“请遵医嘱以上信息仅供参考” 4. 回答中使用序号分点逻辑清晰必要时引用资料来源。 检索资料 {context} 用户问题{question}这个模板做了三件事限定角色、约束边界、兜底机制。限定角色让模型“进入状态”约束边界直接告诉模型“不知道就说不知道”兜底机制是在医疗场景加一个安全声明——这个细节在答辩时非常加分说明你考虑到了医疗系统的合规风险。还有一个参数值得注意temperature。调用的温度参数控制输出的随机性医疗问答我建议设到0.1到0.2之间让输出尽量确定和保守。如果你设成0.7以上模型可能每次给出的答案措辞都不一样这在医疗场景是不可接受的。2.4 问答交互界面与完整系统流程前端交互我用Streamlit来实现原因很直接纯Python、上手快、内置组件足够做出一个像样的问答界面。Streamlit的整个页面就是一个自上而下执行的脚本写起来特别直观上方是标题和说明中间是用户输入框下方是答案展示区和参考来源。完整的问答流程在代码上这样串联前端接收用户问题把问题交给检索模块在向量库中做语义搜索取Top-K相关文本块K一般设3到5将检索到的文本块和用户问题组装进Prompt模板调用大模型接口生成答案将答案、参考来源、耗时一并返回前端展示。为了提高使用体验我在界面上还做了两个细节。第一个是流式输出让答案像打字机一样逐字出现用户等待时不会焦虑第二个是参考来源折叠区点击按钮可以展开看到当前答案引用了哪些文档片段增强可信度。这两个点虽然实现不难但对毕设演示效果来说是实打实的加分项。3. 实操过程与核心环节实现3.1 环境准备与依赖安装先交代一下环境我用的是Python 3.10Windows和Linux都能跑但建议开发阶段用Linux或Mac因为一些Python依赖在Windows上编译会出幺蛾子。安装依赖我用一个requirements.txt管到底核心依赖如下fastapi0.110.0 uvicorn0.27.0 langchain0.1.16 langchain-community0.0.34 chromadb0.4.24 sentence-transformers2.6.1 pymupdf1.24.0 streamlit1.33.0 openai1.23.0 python-docx1.1.0 paddleocr2.7.0安装命令pip install -r requirements.txt如果下载慢记得加清华镜像源pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple。3.2 知识库构建从文档到向量库的完整流程知识库构建是整套系统里工作量最大的部分但也是最有价值的部分。我建议用医疗公开数据集构建一个约200篇文档的初始知识库比如常见的用药指南、疾病科普、急救手册等。数据获取要关注版权和合规问题尽量使用公开可获取的资料。文档入库的代码逻辑这样写import os from langchain.document_loaders import PyMuPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import Chroma def build_knowledge_base(doc_dir, persist_dir): # 1. 遍历目录加载所有文档 docs [] for file in os.listdir(doc_dir): if file.endswith(.pdf): loader PyMuPDFLoader(os.path.join(doc_dir, file)) docs.extend(loader.load()) # 2. 文本切块 text_splitter RecursiveCharacterTextSplitter( chunk_size400, chunk_overlap80, separators[\n\n, \n, 。, , , , ] ) chunks text_splitter.split_documents(docs) # 3. 向量化并写入向量库 embeddings HuggingFaceEmbeddings( model_name/path/to/bge-m3, # 本地模型路径 model_kwargs{device: cpu} ) vectorstore Chroma.from_documents( documentschunks, embeddingembeddings, persist_directorypersist_dir ) vectorstore.persist() print(f知识库构建完成共{len(chunks)}个文本块)这里有几个易错点必须提醒。第一个是separators参数的顺序它会按照优先级从高到低尝试切分所以你要把最优先的段落实符放在最前面。第二个是Embedding模型建议下到本地再用一是速度快二是答辩现场如果断网也能演示。第三个是Chroma的persist_directory要指定一个独立的文件夹方便后续重建和管理。3.3 RAG检索与生成核心代码实现知识库存好后核心的问答逻辑就简单了。用LangChain的RetrievalQA组件或手动组装都可以我这里给你一套更容易理解的手动方式方便你在答辩时讲清楚每个环节def generate_answer(question, vectorstore, llm): # 1. 检索Top-K相关文档块 retriever vectorstore.as_retriever( search_typesimilarity, search_kwargs{k: 4} ) docs retriever.get_relevant_documents(question) # 2. 组装上下文 context \n\n.join([doc.page_content for doc in docs]) # 3. 构建Prompt prompt f你是一位专业、严谨的医疗信息助手。请严格按照以下检索资料回答用户问题。 要求只能基于资料内容作答严禁编造资料中不存在的医疗信息如果资料不足以回答请明确说根据现有资料无法准确回答涉及药品用法时必须指出请遵医嘱以上信息仅供参考。 检索资料 {context} 用户问题{question} # 4. 调用大模型生成 response llm.chat.completions.create( modelyour-model-name, messages[{role: user, content: prompt}], temperature0.1 ) answer response.choices[0].message.content # 5. 返回答案和参考来源 sources [doc.metadata[source] for doc in docs] return answer, sources为了让检索结果更精准我还会加一个相关性过滤。计算检索出来的每个文档块与用户问题的余弦相似度如果最高相似度低于0.45说明知识库里可能确实没有相关内容这时候我会让系统直接返回“知识库中暂未找到相关内容”而不是强行让模型回答。这个阈值需要自己跑几组测试数据来标定不同Embedding模型的最优阈值略有差异。3.4 用Streamlit快速搭建问答界面Streamlit写界面基本不用学前端代码非常直白。核心页面代码大致长这样import streamlit as st st.set_page_config(page_title医疗问答系统, layoutwide) st.title(医疗知识问答系统) st.caption(基于RAG与大模型技术 | 知识库范围公开医疗资料仅供参考不构成医疗建议) # 初始化 if answer not in st.session_state: st.session_state.answer st.session_state.sources [] # 用户输入 question st.text_input(请输入你的医疗问题, placeholder例如高血压患者饮食上需要注意什么) if st.button(提交问题) and question: with st.spinner(正在检索知识库并生成回答...): answer, sources generate_answer(question, vectorstore, llm) st.session_state.answer answer st.session_state.sources sources # 展示答案 if st.session_state.answer: st.markdown(### 回答) st.write(st.session_state.answer) with st.expander(查看参考来源): for i, src in enumerate(st.session_state.sources): st.info(f[{i1}] {src})记得在页面加上那句“不构成医疗建议”的提示语。这在项目实施上是个很小的细节但它体现的是你作为系统设计者对医疗场景严肃性的认知答辩老师通常会注意到这一点。3.5 本地大模型部署替换方案如果你不想调用云端API或者想让整个系统完全本地化运行推荐用Ollama部署开源模型。Ollama是一个极简的大模型本地部署工具命令只有三行# 安装Ollama后拉取模型 ollama pull qwen2.5:7b # 启动服务 ollama serve然后代码里用OpenAI兼容的接口调它只需要改base_urlfrom openai import OpenAI llm OpenAI( base_urlhttp://localhost:11434/v1, api_keyollama # 本地服务不需要真实key随便填 )这样整个系统就完全不依赖外网了。我在测试中发现Qwen2.5-7B在本地跑RAG问答的效果足够用于毕设演示单次问答耗时大概在3到8秒取决于文档块的输入长度。如果觉得慢可以换更小的模型如Qwen2.5-3B但回答质量会有一些下降。这个权衡你可以在项目文档里做对比说明这也是答辩材料的好素材。4. 常见问题与排查技巧实录4.1 大模型“幻觉”问题怎么让系统不乱说这是RAG系统最核心的问题用户问“这个药能不能吃”系统如果给了错误信息后果很严重。我排查过的“幻觉”案例主要有三种场景第一种检索到的资料不相关模型又强行回答。解决方案就是我们前面提到的相似度阈值过滤。第二种检索相关资料太少模型Context不足只能靠自己的常识补全。解决方案是提高Top-K的值或者把切块策略里的块大小调大让单次召回的信息量更足。第三种Prompt约束力度不够模型没有意识到自己必须忠于资料。解决方案就是强化Prompt把“严禁编造”、“明确说无法回答”这些规则写得更直白。4.2 检索效果差先排查切块还是Embedding如果用户的问题很明确但系统答非所问问题大概率出在召回环节。排查思路是这样先用调试工具打印出检索出来的文档块检查这些片段与用户问题是否在语义上相关。如果文档块本身不相关说明切块策略有问题比如把一个完整的问题拆成了两半或者块太小导致语义不完整。如果文档块相关但答案仍然不对说明问题出在生成环节可能是Prompt约束不够或者模型对上下文理解有偏差。实际项目中我遇到最多的是切块问题。有一个典型病例用户问“糖尿病人可以吃西瓜吗”知识库里有资料明确写了“糖尿病患者在血糖控制稳定时可少量食用含糖量低的水果”但因为切块时句子被切断了这个信息被拆进了两个块单块检索时只召回了一半内容模型回答就变得模糊。改大chunk_size并增加重叠长度后这个问题就解决了。4.3 向量库选型对比与数据更新策略很多同学在答辩时会被问“你向量库里的知识过期了怎么办”这个问题看似简单其实考察的是工程思维。线上知识库的更新策略一般有三种全量重建、增量添加、定期替换。全量重建就是跑一遍入库脚本简单但耗时增量添加是把新文档切片、向量化后追加到现有集合里快但要注意去重定期替换是对已有的过期文档做删除再添加。毕设阶段用全量重建就够了但你在文档里要把这个扩展思路写清楚这个问题答好了是很大的加分项。另外一个细节是向量库选型的对比这是各种面试和答辩的高频问题。我常用一个表格说明对比维度ChromaFAISSMilvus部署难度极低中等高数据规模万级以下十万级百万级以上持久化本地文件需自行实现自带分布式存储运维成本零低高适用场景毕设/原型中小型项目企业级生产环境4.4 部署与演示环境的问题排查毕设答辩最怕现场翻车。我在这方面吃过亏分享几个排查点。问题一运行报依赖冲突。LangChain的版本迭代很快不同版本之间API差异不小。我的建议是严格锁定requirements.txt里的版本号不要用最新版——最新版往往意味着不兼容。如果你在网上找参考代码注意看它用的LangChain版本跨版本抄代码很容易跑不起来。问题二Streamlit界面加载慢。大概率是Embedding模型首次加载耗时较长。解决办法是在系统启动时预加载模型把模型对象缓存到内存避免每次问答都重新加载一遍。Streamlit可以用st.cache_resource装饰器做缓存。问题三内存溢出。如果你的机器内存只有8GB加载Embedding模型再加7B大模型可能会很吃紧。建议方案是Embedding模型用text2vec的小版本大模型用3B或更小的量化版本或者直接用云端API。问题四答辩现场网络不稳定。如果你依赖云端API演示时突然断网就尴尬了。我的经验是准备两套方案主方案调用云端API备选方案用Ollama本地模型。答辩前把本地模型先跑通一遍现场即使断网也能从容应对。5. 项目扩展方向与答辩加分项参考5.1 引入重排序Rerank机制如果说基础RAG是及格线那么Rerank就是让你冲到优秀线的关键一步。基础RAG是直接从向量库里挑Top-K个相关块但这些块之间的相关度排序不一定准确。Rerank的做法是先把候选集放宽比如取Top-20再用一个专门的重排序模型对候选块和用户问题的相关度做精细打分最后取Top-3到5个。重排序模型推荐bge-reranker-base它比纯向量检索更准确——因为它不是只比较向量相似度而是用更复杂的交互方式重新计算相关度。好处是显而易见的召回准确率提升明显尤其是对于那种信息藏在长文档中间的情况。代价是多了一次模型推理每次问答增加约几百毫秒延迟对对话场景完全可接受。这个模块如果能在毕设里加进去技术上就是完整的“召回重排生成”三段式RAG含金量高很多。5.2 融合知识图谱增强逻辑推理能力有精力的同学可以考虑在RAG基础上引入医疗知识图谱这也是目前业界比较火的“GraphRAG”方向。医疗知识图谱的本质是“实体-关系”网络比如“阿莫西林”是“青霉素类抗生素”“青霉素过敏”是“阿莫西林”的“禁忌症”。有了这层关系问答系统在进行多跳推理时就比单纯向量检索靠谱得多。比如用户问“我对青霉素过敏能否服用阿莫西林”纯RAG系统需要在文档里找到这两者关系的描述才能答对但引入知识图谱后系统可以直接沿着“阿莫西林 - 青霉素类 - 过敏禁忌”的路径推理出答案。这个扩展方向在毕设中不必完整实现哪怕只是结合研究现状做方案设计说明也能体现你的知识面和技术前瞻性。5.3 智能切块与元数据过滤更精细的工程优化点是元数据过滤。在构建知识库时给每个文本块打上结构化标签比如“来源文档”、“章节标题”、“药品名”、“适应症”等。检索时先做一层过滤比如用户问“阿莫西林的用量”可以先过滤出药品名为“阿莫西林”的文档块再在这些块中做向量检索。这种“先粗筛后精排”的思路在工业级RAG系统里非常常见毕设能做到这个层面已经体现出相当强的工程能力了。5.4 系统评估体系的搭建最后是我强烈建议的一个加分点建立你自己的评估集。毕业答辩时老师问“你的系统准确率是多少”如果你的回答是“感觉还不错”那就太可惜了。正确做法是提前整理50到100个典型的医疗问答对作为评估集然后跑一遍系统统计出结果的准确率、召回率。具体做法是对每个问题跑系统生成答案用RAGAs框架一个专门的RAG评估库或人工标注的方式判断答案质量最后算出一个可量化的指标。比如你可以得出“在100个医疗问答测试集上系统回答准确率为87%其中检索相关度平均分0.82”。这个数字比任何描述都有说服力。评估体系不仅在毕设答辩中重要也是RAG系统开发里绕不开的一环——没有评估就没有优化方向这也是很多初学者容易忽略但工程实践里极其重要的一环。写在最后回到标题里那个关键词“高分”。说实话这个项目能拿到高分不是因为用了多么前沿的模型而是因为它在技术选型、工程实现、场景思考三个层面都做到了扎实。RAG在医疗问答场景里的定位很清晰它不是让大模型“更聪明”而是让大模型“有据可依”。把知识库做好、把检索链路调优、把Prompt约束清楚、把兜底机制设计好这四步走完整个系统的表现就远超那些只调一个API就交差的方案。我在实际调试过程中最大的体会是RAG项目的耐心要求比代码能力更重要。第一次跑通可能只需要一个晚上但把检索质量从“能用”调到“好用”可能需要一周甚至更久。这个过程没有捷径就是不断测试、观察失败案例、调整参数。但恰恰是这个过程能让你在答辩时言之有物——因为每一个参数背后都是你亲手做过的实验。项目源码和详细文档建议你按模块整理好每个关键函数都配上注释和设计说明这不仅是答辩的需要也是你几个月后回看这份代码时能快速理解自己当时设计思路的最好方式。根据我个人经验如果你打算在这个题目上继续深入最值得投入的方向就是评估体系和重排序机制。前者让你的系统“可以度量”后者让你的系统“可以更好”。这两个模块补齐之后这套医疗问答系统在技术上已经接近一个小型工业级RAG产品的雏形了。本文还有配套的精品资源点击获取
返回列表