如何用大模型+RAG 给宠物做一个 AI 健康助手?——阿里云 AI 搜索开放平台

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: 本文分享了如何利用阿里云 AI 搜索开放平台,基于 LLM+RAG 的系统框架,构建“宠物医院AI助手”的实践过程。

——已获知乎作者【卜寒兮】授权转载

事情是这样的,前段时间我家猫软便一直不好,我带去宠物医院检查。现在的宠物医院都会给去过的宠物建档案,就像人的电子病历一样,记录一些基本信息、病史,以及疫苗接种记录之类的。因为之前去过同一家,所以我家的猫在这也有记录,当天去了之后,医生也是惯例查电子记录,但不知道他们的系统有问题还是他不会用,找了半天也没找出来,后来另外一个人过来在后台把一大串数据调出来才找到。 当时我的感觉是他们这个信息管理系统太不智能了,作为一个 AI 大模型的重度使用者,自然想到大模型在宠物医院这个场景下的应用,特别是结合 RAG(Retrieval-Augmented Generation, 检索增强生成)技术,应该可以解决很多实际问题。比如宠物信息的管理、辅助兽医诊断、病历分析等等,这些都是大模型擅长的东西,在类似的垂直领域已经有不少成功的应用了。 当下萌生这个想法之后,晚上就简单构思了一个基于 LLM+RAG 的系统框架(就叫它“宠物医院 AI 助手”吧)。

image.png

然后做了一个简易版的实现,可以管理宠物的基本信息,针对性的给出健康建议等,效果大概是下面这样⬇️

image.png

这篇文章就主要分享一下思路和详细的搭建过程。 最核心的思路就是用 RAG 来增强通用大模型在特定领域和私有知识库场景下回答的精准度。 以防有人不了解,这里先补充一点 RAG 技术的背景知识。(不感兴趣的可以直接划到实操部分)

一、为什么要用 RAG?

大家都知道,大模型掌握的知识来源于海量数据的训练,所有能获取到的信息和知识都可以文本化后投喂给大模型,经过训练后内化为大模型知识的一部分。但问题在于有些知识和数据是私有的,或者是有时效性的,研发大模型的企业无法获取到这类数据去训练模型,当模型回答相关问题的时候,也就无法给出准确的答案,甚至出现“幻觉”,编造错误的信息输出给用户。 所以,AI 并不是什么都知道,你问 AI 全世界的猫有多少品种,它可能会告诉你;但是如果你问 AI 我家的猫叫什么,它当然不知道,因为它的训练数据里没有这个信息。 以上只是一个举例,更一般的情况是特定领域的专业知识(比如法律、医疗、金融),或企业内部非公开数据(比如项目文档、技术规范、产品信息等等),在这些场景中,光靠通用大模型无法解决实际需求。比如一家公司需要用大模型构建 AI 智能客服,回答客户产品咨询相关的问题,那么就必须想办法让模型“看到”产品数据。

1.1 了解 RAG

RAG 的基本思想就是给大模型外接一个“知识库”,它不是让 LLM 仅依赖其内部预训练的知识来回答问题,而是在生成答案之前,先从一个外部的(通常是更新的、更专业的)知识库中检索相关信息,然后将这些信息作为上下文提供给模型,指导它生成更准确、更可靠、更有依据的回答。

image.png

RAG 结合了信息检索(Retrieval)的能力和大模型强大的生成(Generation)能力,很好的解决了 LLM 特定领域知识缺乏、知识时效性差等问题。 适合采用 RAG 方案的场景一般都有下面这些特点:

  • 依赖外部、特定或动态更新的知识。
  • 对答案的准确性、事实性和可追溯性要求高。
  • 需要处理领域专业知识或私有数据。
  • 希望在不频繁重新训练大模型的情况下,扩展或更新系统的知识范围。

对照这些特点,会发现上面提到的宠物医院场景非常契合 RAG 的技术优势。

第一,痛点明确。类似人的病历一样,宠物病历通常包含大量非结构化文本(医生记录)、结构化数据(检查结果)和时间序列信息。人工查找、汇总特定信息非常耗时。而借助 AI 可以快速定位和总结。

第二,知识库私有且专业。病历数据以及诊断经验等是宠物医院私有数据,也属于特定领域知识库,不适合公开的大模型直接回答,属于 RAG 的理想应用场景。

第三,技术匹配度高。

  • 提高效率:RAG 擅长从文档库中检索相关信息并结合 LLM 生成针对性回答,这能明显提高兽医获取宠物关键信息的效率,节省查阅时间;
  • 辅助诊断:大模型还可以结合全面的历史记录和检查报告,结合模型自身理解能力和数据分析能力,提供初步诊断,作为兽医的参考建议。
  • 定制化健康建议。基于更全面的知识库信息,AI 可以给出更个性化和有针对性的健康管理建议(如饮食、运动、复查提醒等)。

1.2 RAG 系统的关键组件

image.png

(来源:https://mp.weixin.qq.com/s/UrTS7evWZeZp8mnjQiKEuQ

通俗的讲,RAG 就是在模型正式回答之前把外部知识库的相关“知识/上下文”补充到用户的问题(query)中,一起输入给大模型。这里的关键在于如何精确地检索出来跟用户 query 相关的知识。 然而,外部知识库通常是多种格式的数据(PDF、txt、图片等等),它们无法直接被检索,也无法被大模型理解,所以在构建知识库过程中,需要进行一系列数据处理操作。

具体地,对于原始数据,一般需要如下步骤:

  • 原始数据解析。比如把非结构化的文档转换为结构化文档;或者将图片通过 OCR 识别、大模型理解等收到解析为文本;
  • 文档切片。将长文档切割成较小的、语义相对独立的文本块 (Chunk)。
  • 向量化。通过 embedding model 将文本转换为机器能理解和计算的数学形式(向量),以便进行语义相似度计算、信息检索等任务。
  • 索引与存储。将文本块内容、其对应的向量以及可能的 metadata (如文档来源、块编号、标题等) 存储到向量数据库中。


(来源:https://www.multimodal.dev/post/how-to-chunk-documents-for-rag

目前市面上已经有不少实现 RAG 的常用工具和框架,比如主流的 LangChain、LlamaIndex 基础框架,以及各类云平台等。 我用的是阿里云的AI搜索开放平台,之所以选这个,是因为它把 RAG 的整个链路都组件化了,不需要自己写底层代码,只需要编排好每个环节,直接调用相关的服务就可以完成对应的任务,调用代码也通过模块化的形式提供,所以搭建起来非常快,并且不需要很高的技术门槛。 比如,你可以直接在平台的体验中心里选择文本向量化服务,并选择一个 embedding 模型,然后粘贴想处理的文本,点击“获取结果”就可以得到这段文本的向量表示(下面的演示里是一个1536维的向量)。同时,还提供了完成这个操作的示例代码,属于是“开箱即用”了。

image.png

下面是借助阿里云 AI 搜索开发平台搭建一个 RAG 系统(以本文宠物医院场景为例)的完整过程。

二、完整搭建过程

2.1 知识库

上面提到,RAG 的知识库可以是领域特定知识、企业私有数据,通俗来说,只要是对场景任务帮助,能给大模型提供增量信息的都可以作为知识库。 比如可以是专业的诊断书籍,医院积累的病历、宠物数据等等,甚至是电子医疗影像(结合LLM多模态能力)。 本文的例子中,由于我并没有真实的数据,所以找到了一份家庭宠物医生的参考书,然后用大模型随机生成了一些宠物档案,作为模拟数据。由于都是纯文本数据,可以把他们保存在一个txt文件中。

image.png

2.2 开通阿里云 AI 搜索开放平台服务

1、首先需要在阿里云平台官方开通 AI 搜索开放平台服务,才能使用平台上的功能,开通服务是免费的,登录一下阿里云账号后开通即可,官网链接: https://opensearch.console.aliyun.com/cn-shanghai/rag/server-market?spm=a2c4g.11186623.0.0.4899347aSJxkI2

image.png

2、开通之后,在页面左侧点击 API Keys,创建一个密钥,以便后续通过 API/SDK 调用相关服务时使用,注意及时保存。

image.png

3、平台功能及调用方法 目前,该平台提供了10多种智能搜索和 RAG 场景相关的服务,比如文档/图片内容解析、文本向量化、搜索引擎、大模型(支持 DeepSeek-R1,QwQ 等推理模型)等等。 帮大家整理了一下完整服务如下⬇️

image.png

你可以通过“体验中心”在线使用这些功能(新用户有10次免费额度)。

image.png

也可以通过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_tokenendpoint替换为你自己的 API key 和 API 域名:

image.png

如果程序正确运行,并出现类似下图中的结果,则说明环境配置成功:

image.png

2.3 创建 Elasticsearch 实例

根据上面的介绍,将知识库的文档向量化后,需要存储到向量库中,以便后续的索引和检索等操作。本文使用阿里云 Elasticsearch 作为搜索引擎,它是阿里云平台提供的 AI 搜索引擎服务,可进行向量和文本内容存储、构建索引、以及在线向量/文本检索,结合排序等服务实现知识库文档的召回,为接下来的大模型增强生成提供必要的上下文信息。 使用阿里云 Elasticsearch 的方式是创建一个 Elasticsearch 实例,并完成必要的配置,具体步骤如下: (1)进入阿里云 Elasticsearch 平台(https://elasticsearch.console.aliyun.com/cn-shanghai/instances),进入“Elasticsearch实例”页面,点击“创建”后进入配置页面:

image.png

(2)规格配置。在该页面进行实例各项规格的配置,建议选择“按量付费”,会以小时为单位计算费用,接下来选择地区,建议选择离自己最近的区域。

(3)网络类型这里,需要首先创建一个 VPC 网络和对应的虚拟交换机,可通过如下地址创建:https://vpc.console.aliyun.com/vpc/cn-shanghai/vpcs

image.png

需要注意的是创建交换机的时候,可用区要跟 Elasticsearch 的可用区保持一致。

image.png

然后点击刷新,创建好的VPC就是自动出现,选中即可。

image.png

(4)配置 ES 实例规格,根据自己的实际需求选择对应参数,建议一开始可以配置低一点,因为这个是按规格和小时数收费的,测试和开发阶段不用配置太高。 最后填入登录名(默认)和登录密码,后面会用到。

image.png

最后确认配置无误后,点击立即开通完成ES实例创建。

image.png

(5)设置 ES 访问 ip 白名单 不管是通过公网还是私网,访问 ES 实例之前,都要将待访问设备(比如你自己的电脑)的 ip 加入到 ES 的访问白名单中。 在ES控制台,选中刚刚创建好的实例,进入设置页面,选择“安全配置”,点击“ VPC 私网访问白名单”或“公网地址访问白名单”(默认关闭,需要手动打开)右侧的“修改”。

image.png

在修改白名单面板,单击 default 分组右侧的配置,然后把你电脑的 ip 添加到白名单中。(FIY:可以通过www.cip.cc 查看自己电脑的 ip 地址)

2.4 编排 RAG 系统组件

完成以上的准备工作,就可以重新回到 AI 搜索开放平台正式搭建 RAG 系统了。实际上,平台专门针对 RAG 场景提供了一套标准的搭建模板,包含了从文档处理、向量化,到检索、排序、上下文增强,再到模型生成的完整技术链路。

image.png

在场景中心,进入到RAG场景:

3492ea335e76f4b67181bc65a3249e03.gif

在该页面对具体环节进行配置,每一个环节都提供一种或多种服务/模型来完成具体的任务,对应的服务已经集成到平台上了,只需要按照自己的需求选择即可。

比如有几个关键的部分: 1、文本向量化服务。有针对多语言的 embedding 模型,也有专门针对中文的 embedding 模型; 2、排序服务。根据用户问题(query),搜索引擎从知识库(如文档集合、数据库)中初步召回(Retrieve)一批可能相关的文档片段;但需要对召回的文档进行更精细的评估和排序,选出最相关的片段和用户问题组合在一起作为 prompt 提供给大模型,这个任务就是排序/重排序。它直接关系到提供什么样的额外信息给大模型作为上下文参考,直接影响了大模型生成回答的准确性和相关性。阿里云 AI 搜索平台的排序服务,可找到相关性更高的内容并依次返回,有效提升检索及大模型生成的准确率。

image.png

3、大模型生成服务。检索和排序部分负责“找对书、翻到页”(提供相关的原始素材),而 LLM 则负责“阅读理解、提炼总结、写出答案”。毫无疑问,大模型直接决定了整个系统输出的上限和质量。尽管检索环节提供了相关的外部知识,但最终将这些知识转化为精准、流畅、有用答案的“大脑”仍然是 LLM 。

平台提供的大语言模型服务包括:

  • 通用模型:
  • DeepSeek 系列:提供 R1/V3 及 7B/14B 蒸馏等全线模型。
  • 通义千问 (Qwen) 系列:支持 Turbo、Plus、Max 版本。
  • RAG 优化模型:
  • 内置 OpenSearch-通义千问-Turbo:基于 Qwen-Turbo,经有监督微调,专用于提升 RAG 性能和降低幻觉率。

完成所有服务的配置后,点击底部的代码查询,就可以得到完整的 Python 脚本,分为离线处理和在线问答两个部分。

image.png


将代码文件下载到本地,完成必要参数的配置,需要自己填入的参数有:

  • api key和api域名(参照上文)
  • 工作空间名称(workspace_name),如果你没有新建过工作空间,那就是默认的default,无需修改;如果使用的是新创建的工作空间,此处填入新工作空间的名称;
  • ES登录名和密码(es_auth),即创建ES实例时自己设置的密码;
  • ES地址(es_host),在ES实例的信息页面查找:

image.png

image.png

2.5 效果测试

完成上述所有配置后,即可以在本地的 Python 环境中执行脚本。

1、首先执行文档处理脚本,离线处理包括知识库文档解析、文档切片、向量化和将向量写入搜索引擎等任务;注意模板代码里用到的是示例数据,如果希望处理自己的知识库,那么需要把document_url这里的链接换成自己文档的链接(比如我这里是把文档存储到了阿里 OSS 上,所以直接使用文件的 OSS 地址)。

image.png

运行后如果出现“ES write success”,说明知识库文本和向量数据成功写入了 ES 中,RAG 的关键步骤之一向量化就完成了。

image.png

2、接下来就可以正式利用知识库内容+LLM 回答问题了(执行在线问答脚本)。

  • 系统先把问题转换成它能“读懂”的数学形式(Query向量化);
  • 然后利用向量的相似度,去知识库里快速找出一些可能相关的文档片段(文档召回)。
  • 接下来会重新评估找出来的片段,挑出其中最有用、最匹配你问题的几个(排序打分,示例脚本中设置的是 top 8,可以根据具体情况修改该参数)。
  • 最后,把原问题和这些精选出来的“参考资料”一起交给大模型,让它根据这些上下文信息生成一个清晰、准确的回答(大模型问答)。

至此,一个简易的“宠物医院AI助手”就搭建完成了。我测试了一下直接用它查询宠物档案信息,比如查询“某个宠物的疫苗接种记录”:

image.png

对比实际数据,信息是完全吻合且准确的:

image.png

结合大模型自身的知识和性能,还可以完成更智能化的任务,比如让该“助手”针对这个猫咪平时的习惯(同样存档于知识库中),推测其可能发生的疾病,并给出一些针对性的喂养建议:

image.png

通过这个例子简要演绎一下 RAG 的过程,大致就是:

  • 系统首先理解我(用户)的意图,提取关键信息,比如宠物的姓名,然后在给到的电子知识库中,通过数据过滤和向量搜索,检索(Retrieval)出跟J asper 最相关的行为习惯和历史记录片段
  • 接着,系统将这些检索到的、关于 Jasper 的具体信息(上下文)与原始问题增强(Augmented)组合,形成一个详细的指令提示给大型语言模型 (LLM)。
  • 最后,LLM 利用这个包含具体上下文的 prompt ,结合其自身的兽医知识进行推理分析,生成(Generation)一份针对 Jasper 个体的、有理有据的健康风险评估和个性化喂养建议。

image.png

如果没有 RAG 的外接知识库,大模型通常只会给出一个博学但泛泛而谈的答案,比如基于品种特性和一般猫科知识的回答;而在这个例子中,RAG 系统则能化身为一个“私宠兽医“,结合通用知识和某个宠物的专属档案和记录,提供高度个性化、有事实依据、更具针对性的分析和建议。这也是 RAG  的核心优势——将LLM的通用智能锚定在具体的、实时的个体数据上。

以上就是完整的搭建一个 RAG 系统的过程,其实我自己根本没写几行代码,主要是阿里云的 AI 搜索开放平台把对应的功能模块化后,我只需要选择对应的服务就行了。可以单独调用平台的某个服务,也可以搭建完整的工作流。我使用下来的感受,可以概括为几个词:“简单、高效、灵活、省钱”。 关于费用这块,主要是ES实例的运行费用,至于 AI 搜索开放平台本身服务的调用,参照一下平台的计费规则,我觉得几乎都可以忽略不计了。

image.png

实际上 RAG 技术的潜在应用场景非常多,只要大模型幻觉和数据私有这两个问题存在,RAG 就一直有市场,许多企业接入大模型更多的业务需求其实都是处理内部数据,这个需求背景下,可以说 RAG 是刚需。 最后,对于想尝试搭建 RAG 系统的,推荐大家去亲自动手尝试一下。


更多详情https://www.aliyun.com/activity/bigdata/opensearch/platform

立即体验https://opensearch.console.aliyun.com/cn

目录
打赏
0
12
12
0
1603
分享
相关文章
RAG vs. MCP: 你不知道你需要的 AI 充电接口
本文通过“充电接口”比喻,对比了两种AI技术:RAG(特定充电口)和MCP(通用充电口)。RAG像专用数据线,每次需连接外部数据库检索信息,适合动态查询;MCP则似USB-C,依靠内置记忆提供快速、个性化响应,适用于长期交互。两者各有优劣,RAG灵活但效率低,MCP高效却可能缺乏最新数据。未来可能是两者的结合:MCP负责上下文记忆,RAG获取最新资讯,实现更自然的AI对话体验。文章还探讨了如何用Apipost设计适配两者的API,助力AI系统开发。
AI 搜索开放平台重磅发布:Qwen3 模型上线啦
阿里云AI搜索开放平台重磅发布最新Qwen3模型,为企业和开发者提供全栈智能搜索解决方案。Qwen3作为最新一代大模型,在推理、多语言支持和Agent能力上表现卓越。用户可通过三步快速体验Qwen3服务,助力业务在AI时代抢占先机。
56 11
剑指大规模 AI 可观测,阿里云 Prometheus 2.0 应运而生
本文介绍了阿里云Prometheus 2.0方案,针对大规模AI系统的可观测性挑战进行全面升级。内容涵盖数据采集、存储、计算、查询及生态整合等维度。 Prometheus 2.0引入自研LoongCollector实现多模态数据采集,采用全新时序存储引擎提升性能,并支持RecordingRule与ScheduleSQL预聚合计算。查询阶段提供跨区域、跨账号的统一查询能力,结合PromQL与SPL语言增强分析功能。此外,该方案已成功应用于阿里云内部AI系统,如百炼、通义千问等大模型全链路监控。未来,阿里云将发布云监控2.0产品,进一步完善智能观测技术栈。
阿里云AI Stack全量适配Qwen3模型,企业级部署效率全面升级
2025年4月29日的凌晨5点,阿里全新一代模型通义千问Qwen3正式发布并全部开源8款「混合推理模型」,包含: 6款Dense模型:0.6B、1.7B、4B、8B、14B、32B。 2款MoE模型:Qwen3-30B-A3B和旗舰版Qwen3-235B-A22B。 阿里云AI Stack已适配全量Qwen3模型,可快速部署实现Qwen3模型的开箱即用!
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
172 30
演讲实录:中小企业如何快速构建AI应用?
AI时代飞速发展,大模型和AI的应用创新不断涌现,面对百花齐放的AI模型,阿里云计算平台大数据AI解决方案总监魏博文分享如何通过阿里云提供的大数据AI一体化平台,解决企业开发难、部署繁、成本高等一系列问题,让中小企业快速搭建AI应用。
AI赋能大学计划·大模型技术与应用实战学生训练营——华东师范大学站圆满结营
4月24日,由中国软件行业校园招聘与实习公共服务平台携手阿里魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行大模型应用实战学生训练营——华东师范大学站圆满结营。
35 2
破茧成蝶:传统J2EE应用无缝升级AI原生
本文探讨了技术挑战和解决方案,还提供了具体的实施步骤,旨在帮助企业顺利实现从传统应用到智能应用的过渡。
破茧成蝶:传统J2EE应用无缝升级AI原生
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等