微信扫码
添加专属顾问
我要投稿
利用AI大模型和RAG技术打造宠物健康助手,提升宠物医疗服务效率。 核心内容: 1. 宠物医院信息管理的痛点及AI解决方案 2. RAG技术在宠物健康助手中的应用价值 3. 基于LLM+RAG框架的宠物医院AI助手搭建过程
事情是这样的,前段时间我家猫软便一直不好,我带去宠物医院检查。
现在的宠物医院都会给去过的宠物建档案,就像人的电子病历一样,记录一些基本信息、病史,以及疫苗接种记录之类的。
因为之前去过同一家,所以我家的猫在这也有记录,当天去了之后,医生也是惯例查电子记录,但不知道他们的系统有问题还是他不会用,找了半天也没找出来,后来另外一个人过来在后台把一大串数据调出来才找到。
当时我的感觉是他们这个信息管理系统太不智能了,作为一个AI大模型的重度使用者,自然想到大模型在宠物医院这个场景下的应用,特别是结合RAG(Retrieval-Augmented Generation, 检索增强生成)技术,应该可以解决很多实际问题。
比如宠物信息的管理、辅助兽医诊断、病历分析等等,这些都是大模型擅长的东西,在类似的垂直领域已经有不少成功的应用了。
当下萌生这个想法之后,晚上就简单构思了一个基于LLM+RAG的系统框架(就叫它“宠物医院AI助手”吧)。
然后做了一个简易版的实现,可以管理宠物的基本信息,针对性的给出健康建议等,效果大概是下面这样⬇️
这篇文章就主要分享一下思路和详细的搭建过程。
最核心的思路就是用RAG来增强通用大模型在特定领域和私有知识库场景下回答的精准度。
以防有人不了解,这里先补充一点RAG技术的背景知识。(不感兴趣的可以直接划到实操部分)
大家都知道,大模型掌握的知识来源于海量数据的训练,所有能获取到的信息和知识都可以文本化后投喂给大模型,经过训练后内化为大模型知识的一部分。
但问题在于有些知识和数据是私有的,或者是有时效性的,研发大模型的企业无法获取到这类数据去训练模型,
当模型回答相关问题的时候,也就无法给出准确的答案,甚至出现“幻觉”,编造错误的信息输出给用户。
所以,AI并不是什么都知道,你问AI全世界的猫有多少品种,它可能会告诉你;
但是如果你问AI我家的猫叫什么,它当然不知道,因为它的训练数据里没有这个信息。
以上只是一个举例,更一般的情况是特定领域的专业知识(比如法律、医疗、金融),或企业内部非公开数据(比如项目文档、技术规范、产品信息等等)。
在这些场景中,光靠通用大模型无法解决实际需求。
比如一家公司需要用大模型构建AI智能客服,回答客户产品咨询相关的问题,那么就必须想办法让模型“看到”产品数据。
RAG的基本思想就是给大模型外接一个“知识库”。
它不是让 LLM 仅依赖其内部预训练的知识来回答问题,而是在生成答案之前,先从一个外部的(通常是更新的、更专业的)知识库中检索相关信息,
然后将这些信息作为上下文提供给模型,指导它生成更准确、更可靠、更有依据的回答。
RAG结合了信息检索(Retrieval)的能力和大模型强大的生成(Generation)能力,很好的解决了LLM特定领域知识缺乏、知识时效性差等问题。
适合采用RAG方案的场景一般都有下面这些特点:
对照这些特点,会发现上面提到的宠物医院场景非常契合RAG的技术优势。
第一,痛点明确。
类似人的病历一样,宠物病历通常包含大量非结构化文本(医生记录)、结构化数据(检查结果)和时间序列信息。人工查找、汇总特定信息非常耗时。而借助AI可以快速定位和总结。
第二,知识库私有且专业。
病历数据以及诊断经验等是宠物医院私有数据,也属于特定领域知识库,不适合公开的大模型直接回答,属于RAG的理想应用场景。
第三,技术匹配度高。
通俗的讲,RAG就是在模型正式回答之前把外部知识库的相关“知识/上下文”补充到用户的问题(Query)中,一起输入给大模型。
这里的关键在于如何精确地检索出来跟用户Query相关的知识。
然而,外部知识库通常是多种格式的数据(PDF、txt、图片等等),它们无法直接被检索,也无法被大模型理解,所以在构建知识库过程中,需要进行一系列数据处理操作。
具体地,对于原始数据,一般需要如下步骤:
目前市面上已经有不少实现RAG的常用工具和框架,比如主流的LangChain、LlamaIndex基础框架,以及各类云平台等。
我用的是阿里云的AI搜索开放平台,之所以选这个,是因为它把RAG的整个链路都组件化了,不需要自己写底层代码,只需要编排好每个环节,直接调用相关的服务就可以完成对应的任务,调用代码也通过模块化的形式提供,所以搭建起来非常快,并且不需要很高的技术门槛。
比如,你可以直接在平台的体验中心里选择文本向量化服务,并选择一个embedding模型,然后粘贴想处理的文本,点击“获取结果”就可以得到这段文本的向量表示(下面的演示里是一个1536维的向量)。
同时,还提供了完成这个操作的示例代码,属于是“开箱即用”了。
下面是借助阿里云AI搜索开发平台搭建一个RAG系统(以本文宠物医院场景为例)的完整过程。
上面提到,RAG的知识库可以是领域特定知识、企业私有数据,通俗来说,只要是对场景任务帮助,能给大模型提供增量信息的都可以作为知识库。
比如可以是专业的诊断书籍,医院积累的病历、宠物数据等等,甚至是电子医疗影像(结合LLM多模态能力)。
本文的例子中,由于我并没有真实的数据,所以找到了一份家庭宠物医生的参考书,
然后用大模型随机生成了一些宠物档案,作为模拟数据。由于都是纯文本数据,可以把他们保存在一个txt文件中。
1、首先需要在阿里云平台官方开通AI搜索开放平台服务,才能使用平台上的功能,开通服务是免费的,登录一下阿里云账号后开通即可,官网链接:https://opensearch.console.aliyun.com/cn-shanghai/rag/server-market?spm=a2c4g.11186623.0.0.4899347aSJxkI2
2、开通之后,在页面左侧点击API Keys,创建一个密钥,以便后续通过API/SDK调用相关服务时使用,注意及时保存。
3、平台功能及调用方法
目前,该平台提供了10多种智能搜索和RAG场景相关的服务,比如文档/图片内容解析、文本向量化、搜索引擎、大模型(支持DeepSeek-R1,QwQ等推理模型)等等。
帮大家整理了一下完整服务如下⬇️
你可以通过“体验中心”在线使用这些功能(新用户有10次免费额度)。
也可以通过API调用相关的服务,平台支持Python SDK,调用起来也非常方便。
需要提前配置一下Python开发环境,安装依赖项:
pip install alibabacloud_searchplat20240529 alibabacloud_credentials==1.0rc4
可以简单运行一个文档切片的脚本,验证环境是否配置成功:
from alibabacloud_tea_openapi.models import Config
from alibabacloud_searchplat20240529.client import Client
from alibabacloud_searchplat20240529.models import GetDocumentSplitRequest
if __name__ == '__main__':
config = Config(
bearer_token='OS-xxx',
endpoint='xxx.platform-cn-shanghai.opensearch.aliyuncs.com',
protocol='http'
)
client = Client(config=config)
request = GetDocumentSplitRequest().from_map({"document": {"content": "这是一个测试! This is a test.", "content_type": "text"},
"strategy": {"max_chunk_size": 300, "need_sentence": False}})
response = client.get_document_split("default", "ops-document-split-001", request)
for chunk in response.body.result.chunks:
print(chunk.content)
将上述代码中的 bearer_token
和endpoint
替换为你自己的API key和API域名:
如果程序正确运行,并出现类似下图中的结果,则说明环境配置成功:
根据上面的介绍,将知识库的文档向量化后,需要存储到向量库中,以便后续的索引和检索等操作。
本文使用阿里云Elasticsearch作为搜索引擎,它是阿里云平台提供的AI搜索引擎服务,可进行向量和文本内容存储、构建索引、以及在线向量/文本检索,
结合排序等服务实现知识库文档的召回,为接下来的大模型增强生成提供必要的上下文信息。
使用阿里云Elasticsearch的方式是创建一个Elasticsearch实例,并完成必要的配置,具体步骤如下:
https://elasticsearch.console.aliyun.com/cn-shanghai/instances
,进入“Elasticsearch实例”页面,点击“创建”后进入配置页面:
在该页面进行实例各项规格的配置,建议选择“按量付费”,会以小时为单位计算费用,接下来选择地区,建议选择离自己最近的区域。
这里需要首先创建一个VPC网络和对应的虚拟交换机,可通过如下地址创建:https://vpc.console.aliyun.com/vpc/cn-shanghai/vpcs
需要注意的是创建交换机的时候,可用区要跟Elasticsearch的可用区保持一致。
然后点击刷新,创建好的VPC就是自动出现,选中即可。
根据自己的实际需求选择对应参数,建议一开始可以配置低一点,因为这个是按规格和小时数收费的,测试和开发阶段不用配置太高。
最后填入登录名(默认)和登录密码,后面会用到。
最后确认配置无误后,点击立即开通完成ES实例创建。
不管是通过公网还是私网,访问ES实例之前,都要将待访问设备(比如你自己的电脑)的ip加入到ES的访问白名单中。
在ES控制台,选中刚刚创建好的实例,进入设置页面,选择“安全配置”,点击“VPC私网访问白名单”或“公网地址访问白名单”(默认关闭,需要手动打开)右侧的“修改”。
在修改白名单面板,单击default分组右侧的配置,然后把你电脑的ip添加到白名单中。(FIY:可以通过www.cip.cc
查看自己电脑的ip地址)
完成以上的准备工作,就可以重新回到AI搜索开放平台正式搭建RAG系统了。
实际上,平台专门针对RAG场景提供了一套标准的搭建模板,包含了从文档处理、向量化,到检索、排序、上下文增强,再到模型生成的完整技术链路。
在场景中心,进入到RAG场景:
在该页面对具体环节进行配置,每一个环节都提供一种或多种服务/模型来完成具体的任务,对应的服务已经集成到平台上了,只需要按照自己的需求选择即可。
比如有几个关键的部分:
1、文本向量化服务。
有针对多语言的embedding模型,也有专门针对中文的embedding模型;
2、排序服务。
根据用户问题(Query),搜索引擎从知识库(如文档集合、数据库)中初步召回(Retrieve)一批可能相关的文档片段;
但需要对召回的文档进行更精细的评估和排序,选出最相关的片段和用户问题组合在一起作为prompt提供给大模型,这个任务就是排序/重排序。
它直接关系到提供什么样的额外信息给大模型作为上下文参考,直接影响了大模型生成回答的准确性和相关性。
阿里云AI搜索平台的排序服务,可找到相关性更高的内容并依次返回,有效提升检索及大模型生成的准确率。
3、大模型生成服务。
检索和排序部分负责“找对书、翻到页”(提供相关的原始素材),
而LLM则负责“阅读理解、提炼总结、写出答案”。
毫无疑问,大模型直接决定了整个系统输出的上限和质量。
尽管检索环节提供了相关的外部知识,但最终将这些知识转化为精准、流畅、有用答案的“大脑”仍然是LLM。
平台提供的大语言模型服务包括:
完成所有服务的配置后,点击底部的代码查询,就可以得到完整的Python脚本,分为离线处理和在线问答两个部分。
将代码文件下载到本地,完成必要参数的配置,需要自己填入的参数有:
workspace_name
),如果你没有新建过工作空间,那就是默认的default,无需修改;如果使用的是新创建的工作空间,此处填入新工作空间的名称;es_auth
),即创建ES实例时自己设置的密码;es_host
),在ES实例的信息页面查找:完成上述所有配置后,即可以在本地的Python环境中执行脚本。
1、首先执行文档处理脚本,离线处理包括知识库文档解析、文档切片、向量化和将向量写入搜索引擎等任务;
注意模板代码里用到的是示例数据,如果希望处理自己的知识库,那么需要把document_url
这里的链接换成自己文档的链接(比如我这里是把文档存储到了阿里OSS上,所以直接使用文件的OSS地址)。
运行后如果出现“ES write success”,说明知识库文本和向量数据成功写入了ES中,RAG的关键步骤之一向量化就完成了。
2、接下来就可以正式利用知识库内容+LLM回答问题了(执行在线问答脚本)。
至此,一个简易的“宠物医院AI助手”就搭建完成了。我测试了一下直接用它查询宠物档案信息,比如查询“某个宠物的疫苗接种记录”:
对比实际数据,信息是完全吻合且准确的:
结合大模型自身的知识和性能,还可以完成更智能化的任务;
比如让该“助手”针对这个猫咪平时的习惯(同样存档于知识库中),推测其可能发生的疾病,并给出一些针对性的喂养建议:
通过这个例子简要演绎一下RAG的过程,大致就是,
如果没有RAG的外接知识库,大模型通常只会给出一个博学但泛泛而谈的答案,比如基于品种特性和一般猫科知识的回答;
而在这个例子中,RAG系统则能化身为一个“私宠兽医“,结合通用知识和某个宠物的专属档案和记录,提供高度个性化、有事实依据、更具针对性的分析和建议。
这也是RAG的核心优势——将LLM的通用智能锚定在具体的、实时的个体数据上。
以上就是完整的搭建一个RAG系统的过程,其实我自己根本没写几行代码,主要是阿里云AI搜索开放平台把对应的功能模块化后,我只需要选择对应的服务就行了。
可以单独调用平台的某个服务,也可以搭建完整的工作流。我使用下来的感受,可以概括为几个词:“简单、高效、灵活、省钱”。
关于费用这块,主要是ES实例的运行费用,至于阿里云AI搜索开放平台本身服务的调用,参照一下平台的计费规则,我觉得几乎都可以忽略不计了。
实际上RAG技术的潜在应用场景非常多,只要大模型幻觉和数据私有这两个问题存在,RAG就一直有市场,许多企业接入大模型更多的业务需求其实都是处理内部数据,这个需求背景下,可以说RAG是刚需。
最后,对于想尝试搭建RAG系统的,推荐大家去亲自动手尝试一下。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-10-27
2024-09-04
2024-05-05
2024-07-18
2024-06-20
2024-06-13
2024-07-09
2024-07-09
2024-05-19
2024-07-07
2025-05-23
2025-05-16
2025-05-15
2025-05-14
2025-05-14
2025-05-13
2025-05-11
2025-05-08