惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Jina AI
Jina AI
GbyAI
GbyAI
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
P
Proofpoint News Feed
The Cloudflare Blog
H
Help Net Security
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
量子位
博客园 - 聂微东
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
月光博客
月光博客

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
基于开源框架快速搭建基于RAG架构的医疗AI问答系统
Leo · 2024-02-04 · via 人人都是产品经理

LLM大语言模型的出现,让许多系统或产品都有了更大的构建空间。这篇文章里,作者就介绍了自己基于主流的RAG架构搭建一个医学智能问答系统的过程,一起来看看本文的梳理和解读。

医疗智能问答是一个比较经典的医疗应用场景,在该场景下用户首先在对话系统中描述自己的症状,然后问答系统会根据输入的信息回复初步的医学建议。

传统实现方法如规则引擎和知识图谱等由于缺乏对语境和语义的深层理解,导致无法处理过于复杂的问题。随着大语言模型(LLM)的出现,医疗智能问答系统处理更加复杂的语境以及更加准确的结果输出有望实现,所以笔者决定尝试基于当前主流的RAG架构搭建一个医学智能问答系统。

一、产品目标

打造一个基于智能问答系统的“数字全科医生”

这里“全科医生”不是“全能医生”的意思,全科医生一般是指在基层医疗机构(如社区卫生服务中心、乡村诊所等)工作的医生,全科医生通常承担着基层的基础医疗服务,笔者对这个系统的定位是可以提供一些初步的诊断、患者教育和科普功能,而不是用它提供治疗方案(能力边界)。

具体可以拆分以下几个子目标:

  1. 能根据用户输入的信息,初步诊断是否存在病理性的因素以及可能的病因;
  2. 能提供非治疗方案的建议,如生活方式干预、引导去医院做进一步的检查等;
  3. 尽量降低错误率,做到“宁缺毋滥”;
  4. 尽量避免提供直接的用药方案指导或者治疗方案。

二、RAG架构及其工作流程

RAG(Retrieval Augmented Generation)通常翻译为检索增强生成,所以它的核心是“检索”,用户在使用LLM回答问题之前先“检索”外挂知识库的信息,然后将检索到的信息提交给LLM,LLM在“学会”匹配的知识库的内容之后再去生成回答,这样就可以有效减少LLM“幻觉”现象。

RAG工作流程大致如下:

第一步:创建知识库

  1. 首先要对获取的数据做基础的清洗保证质量;
  2. 然后系统对数据进行“分块”(Chunk)处理,通常较小的文本片段可以使RAG系统更快、更准确地发现相关上下文;
  3. 再进一步就是将这些Chunks转换成计算机可以理解的数据也就是向量化(Embedding);
  4. 最后将获取的向量信息存储在向量数据库(Vector DB)中备用。

第二步:检索信息

当用户输入问题时,首先会对输入的“问题”向量化,然后在向量数据库中查询匹配的结果,通过排序规则对结果进行再次排序(Rerank),最后返回最匹配的结果。

第三步:生成结果

系统将匹配的Chunks数据通过设计好的提示(Promopt)模板传递给LLM,LLM基于基于输入的Chunks润色加工后返回问题的答案。

PS:这里只是简单的介绍一下RAG架构的工作流程,实际项目中每一步都包含很多优化策略和配置参数,比如Chunk的大小选择,Embedding模型的选择以及Rerank的规则等,在后面介绍模型优化环节时,将会结合具体问题分享自己的优化思路。

三、基于FastGPT搭建基础问答系统

FastGPT是一个开源的、基于 LLM 的知识库问答系统,相对于langflow,我们可以方便的查看模型各个环节的运行数据(比如知识库的引用情况、token使用等),也支持支持可视化工作流编排,比较适合做调试和扩展应用。

1. 在线搭建

FastGPT提供了线上直接使用的方式,使用流程比较简单,大致分为4步:

  1. 账号注册登录;
  2. 创建自己的知识库;
  3. 创建自己的应用;
  4. 选择应用关联的数据库。

建议大家自行到官网查看操作手册,非常容易上手,访问地址如下:https://fastgpt.run

以上一个使用示例,我们可以查看每一次对话引用的知识库内容、上下文信息以及运行时间等。

但是需要注意的是,模型的调用都是需要收费的,虽然注册后就会赠送5块钱的额度,但是基本也只够体验一下,要搭建一个完整的项目是远远不够的,所以前期尽量先用小样本数据创建知识库(Embedding也是要花钱的)体验整个流程。

2. 本地部署

FastGpt也提供了多种本地部署的方法,推荐使用 docker-compose 进行部署,官方文档如下 https://doc.fastgpt.in/docs/development/docker/, 需要一点编程基础,大部分步骤跟着文档操作就没有问题。

在FastGPT中我们需要用到2个模型,分别是LLM和Embedding model,FastGPT默认采用的是LLM是chagGPT,Embedding model是openAI的Embedding-2,这两个模型调用都是要收费的,我们可以用更便宜的国产大模型替换使用。

现在基座大模型正处于激烈竞争阶段,平台都会送一些赠送token额度,建议大家如果只是想自己尝试做一个demo可以采取这种低成本的方式,FastGPT也提供了通过接入OneAPI的方式来实现对不同大模型的支持。

笔者选用的LLM是ChatGLM,Embedding model是M3E,大概的操作的方法是首先在one API平台分别创建国产LLM和Embedding的模型渠道;

然后在FastGPT的配置文件加入我们要使用的模型,示例如下:

“qaModels”: [

{

“model”: “gpt-3.5-turbo-16k”,

“name”: “GPT35-16k”,

“maxContext”: 16000,

“maxResponse”: 16000,

“inputPrice”: 0,

“outputPrice”: 0

},

//新增chatglm

{

“model”: “chatglm_pro”,

“name”: “GLM”,

“maxContext”: 16000,

“maxResponse”: 16000,

“inputPrice”: 0,

“outputPrice”: 0

}

],

最后,更新运行就可以在界面上选择我们添加的模型来使用了。

当然,这边没有介绍非常详细的部署细节上,大家感兴趣的可以去官网或者B站上搜索相关教程,这边强烈建议没有任何编程经验产品同学先使用在线的环境去体验整个应用流程,毕竟发掘工具的价值、寻找好的应用场景才是我们核心能力。

总结

本文介绍了笔者基于RAG架构搭建一个医疗智能问答系统的背景和预期产品目标,以及RAG的基础概念和基于FastGpt快速搭建问答系统的方法。

搭建完成只是第一步,在实际使用过程中笔者发现了大量的问题,后面将围绕实际应用中出现的问题,分享一些自己优化的思路和效果评测的方法,欢迎对LLM应用感兴趣的同道来一起交流。

本文由 @FrenzyGoat 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。