3 步完成 LangChain 医疗文本分析:把病历变成可检索知识库
3 步完成 LangChain 医疗文本分析把病历变成可检索知识库【免费下载链接】langchainThe agent engineering platform.项目地址: https://gitcode.com/GitHub_Trending/la/langchain一份 200 页的 PDF 病历从读入到变成可检索的结构化 JSON你只需要几行建库代码加一次检索调用。LangChain 医疗文本分析的完整链路是六件事原始文档 → 分割 → 向量化 → 存入向量库 → 相似度检索 → 结构化提取或问答。先看清链路再动手比一上来就调提示词省事得多。先看清六步链路数据到底怎么流加载病历、检验报告统一转成 Documentpage_content 存文本metadata 存科室、日期、页码。分割RecursiveCharacterTextSplitter 按段落→句子递归断句尽量不在半句话处切断。向量化embedding 模型把每个片段变成向量上呼吸道感染和急性咽炎这类近义表述会被拉到相近的位置。入库InMemoryVectorStore 按余弦相似度建索引这就是 LangChain 向量检索临床数据的核心环节。检索拿查询语句的向量取 Top-K 片段。提取把 Top-K 片段交给大模型锁定输出为 JSON。先别急着跑整条链。第 2 到第 4 步是地基地基歪了后面的提取一定歪。分割器默认按通用文本断句想按主诉 / 现病史 / 医嘱这种医学小节切再去翻 分割器源码。能跑通的最短路径两段代码建库分割 向量化 入库from langchain_core.documents import Document from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings from langchain_core.vectorstores import InMemoryVectorStore splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) docs [Document(page_contentt) for t in splitter.split_text(record_text)] vectorstore InMemoryVectorStore(OpenAIEmbeddings()) vectorstore.add_documents(docs)提取一次检索 一次结构化调用LangChain 医学信息提取的关键不在模型在 schema。你声明什么字段它就只给你什么字段from pydantic import BaseModel class PatientInfo(BaseModel): symptoms: list[str] diagnosis: str hits vectorstore.similarity_search(发热、咳嗽、咽痛, k3) ctx \n\n.join(d.page_content for d in hits) info model.with_structured_output(PatientInfo).invoke(ctx)model 换成你的任意聊天模型ChatOpenAI 等即可。更复杂的输出格式解析可以看 输出解析器。到这里就是 LangChain 构建诊断辅助系统的最小形态检索负责找证据模型只负责归纳。⚠️ 避免漏抽的 4 个坑chunk 切在句子中间。诊断和用药被拆进两个片段检索只命中一半输出就缺字段。把 chunk_overlap 调到 50 左右或按病历小节切。只看模型不看检索。k 调大后塞进上下文的不相关片段会带偏模型让它编内容。先打印 hits 人工核对再谈提示词。schema 不设必填。字段全是可选时模型爱留空。用 Pydantic 显式标出必填字段漏抽率会明显下降。忽略 metadata 过滤。不区分患者直接检索容易跨患者串档。入库时把患者编号、日期写进 metadata检索时先过滤。 换组件不改架构的 3 个场景社区诊所病历归档医疗病历结构化历史病历分批跑 add_documentsmetadata 带上患者编号和日期同一个人的记录过滤后检索。医学期刊批量摘要分割器换成 MarkdownHeaderTextSplitter 按论文结构切schema 改成 {结论, 样本量, p 值}一个脚本扫完整个文件夹。公卫周报数据抽取把 similarity_search 换成带 metadata 过滤的检索只取目标周次和辖区的数据再套 with_structured_output 输出固定 JSON。下一步先把最短路跑通拿 20 份真实病历把 InMemoryVectorStore 这条链路跑通人工核对一遍漏抽率数据量上万条片段后再换持久化向量库接本地大模型也只是把 model 换一行。别一上来就堆架构——漏抽率从 12% 压到 3%靠的是调 chunk 和 schema不是换框架。【免费下载链接】langchainThe agent engineering platform.项目地址: https://gitcode.com/GitHub_Trending/la/langchain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考