手把手搭本地 RAG!用阿里云 PolarDB、Lindorm+Ollama,数据隐私全自己把控

简介: 教你用阿里云PolarDB和Lindorm存向量,Ollama跑本地大模型,LangChain串联流程,打造数据不出私网的离线智能问答系统,安全、省钱、可私有化部署,新手也能快速上手!

咱做 AI 应用时,是不是总怕数据传云端不安全?


想搭个能离线用、还不用给 API 按次交钱的智能系统?今天就教你个接地气的方案 —— 用阿里云 PolarDB 和 Lindorm 存向量数据,Ollama 跑本地大模型,再靠 LangChain 串起整个流程,搭个能查自己文档的智能问答工具,全程数据不碰第三方,新手也能跟着做!


一、先搞懂:为啥选这几个工具?

咱不整那些虚的术语,直白说下每个工具是干啥的,为啥凑一起好用:


  • Ollama:装在你电脑上的 “大模型管家”,下模型跟玩手机装 APP 似的,输个命令就能把 Llama 3、Mistral 这些热门模型弄下来,CPU 也能跑,不用折腾复杂的显卡配置。
  • 阿里云 PolarDB:这可是个厉害角色,能 100% 兼容 MySQL 和 PostgreSQL 生态,要是你之前用的是这俩数据库,想迁移到 PolarDB,那可太轻松了,几乎不用改啥代码。它性能超强,交易处理速度最高能达到开源数据库的 6 倍,分析性能更是牛,能达到 400 倍之多。而且支持 Serverless,资源能随业务量灵活调整,成本能省不少。
  • 阿里云 Lindorm:面向海量泛时序、半结构化和非结构化数据提供低成本存储、在线查询和离线分析等一站式数据服务,针对 AI 场景支持正排、全文、向量融合检索和 AI 推理能力。向量引擎特别强大,百亿级高维向量数据存储和检索都不在话下,还支持 SQL、OpenSearch 等开源标准接口,对咱们搭建 RAG 应用来说,适配性非常好。
  • LangChain:像根 “线”,把 “读文档→转向量→存数据库→查数据→让大模型回答” 这一串步骤自动串起来,不用咱自己写一堆代码。
  • mxbai-embed-large/llama3:前者是把文字转向量的 “翻译官”,后者是能聊天、给答案的 “智能大脑”,俩都是轻量款,普通电脑也能扛住。


二、环境搭起来!几步搞定基础配置

1. 先装 Ollama,把大模型弄到手

这步超简单,不管你是 Windows 还是 Linux,跟着来就行:


  • 先下 Ollama:Windows 直接去官网下安装包,Linux 更省事,复制这条命令贴终端里,回车等着就行:

curl -fsSL https://ollama.com/install.sh | sh


  • 启动服务:装完后,再输一条命令让 Ollama 后台跑起来,不然用不了模型:

ollama serve


  • 下俩核心模型:一个转向量的mxbai-embed-large,一个聊天的llama3:8b(80 亿参数,普通电脑 16G 内存就能跑)。输完命令等会儿,模型大,网速慢的话多等几分钟:

ollama pull mxbai-embed-large
ollama pull llama3:8b


小提醒:要是你电脑没显卡,就别下太大的模型(比如 Llama 3 70B),不然回答会很慢;有显卡的话,跑起来会快很多,体验更顺。

2. 配置阿里云 PolarDB

如果想用 PolarDB 来存储数据,咱们先在阿里云的控制台里创建一个 PolarDB 实例。创建的时候,根据自己的业务需求选好数据库类型,像 MySQL、PostgreSQL 这些,还有合适的规格,比如计算资源、存储容量。PolarDB 支持弹性扩缩容,要是后续业务量有变化,随时都能调整配置。


创建好实例后,咱们得拿到连接实例所需的信息,像数据库的地址、端口,还有用户名和密码,这些信息在后面连接数据库的时候得用上。而且 PolarDB 在安全方面做得很到位,支持设置白名单,只让你信任的 IP 地址或者安全组里的 ECS 实例能访问这个数据库,数据安全更有保障。

3. 配置阿里云 Lindorm

Lindorm 的配置也不难。先登录阿里云控制台,找到 Lindorm 服务,创建一个集群。创建过程中,要根据实际应用场景选好集群类型,比如你要是侧重 AI 场景下的向量检索,那就选对向量引擎支持更好的配置;存储容量也得按需规划好,Lindorm 支持 PB 级别的存储扩展,不用担心数据量太大存不下。


创建好集群后,还得创建对应的数据库和表。Lindorm 支持多种数据模型,比如宽表、时序、向量等,咱们根据要存的数据特点来选。比如说,要存文本数据并做向量检索,那就创建一个用向量数据模型的表。之后同样要获取连接 Lindorm 所需的地址、端口等信息,方便后续在代码里连接操作。


三、装数据!把文档转成能查的 “数字串”

RAG 的核心是 “先把文档存起来,问问题时能快速找到相关内容”,咱用阿里云相关文档当例子,演示怎么把文档转成向量存进去:

1. 下代码、装依赖,准备工作做足

  • 先把示例代码拉下来:有大佬已经写好核心逻辑了,咱直接用,省得自己写代码:

git clone https://github.com/abhirockzz/local-llms-rag-cosmosdb
cd local-llms-rag-cosmosdb


  • 建 Python 虚拟环境:怕依赖冲突,建个独立环境,输命令就行(Python 要 3.9 以上版本):

python3 -m venv .venv
# Windows用:.venv\Scripts\activate
source .venv/bin/activate
# 装依赖,把需要的库都弄下来
pip3 install -r requirements.txt


这里的依赖包会包含与 LangChain 相关的,以及操作阿里云 PolarDB 和 Lindorm 数据库的库,它们能帮咱们顺利完成数据处理和存储。

2. 设参数、跑脚本,数据自动存进去

不用改代码,设几个环境变量就行,告诉程序用哪个数据库、哪个模型:

# 要是用PolarDB,指定相关连接信息
export POLARDB_CONNECTION_STRING="你的PolarDB连接字符串"
# 要是用Lindorm,指定相关连接信息
export LINDORM_CONNECTION_STRING="你的Lindorm连接字符串"
# 转向量的模型和维度(mxbai-embed-large固定1024维)
export EMBEDDINGS_MODEL="mxbai-embed-large"
export DIMENSIONS="1024"


接下来,咱们要根据使用的数据库来调整数据加载脚本。如果用 PolarDB,得修改脚本里创建数据库表的部分,让它符合 PolarDB 的语法和要求,比如数据类型的设置要跟 PolarDB 支持的一致。要是用 Lindorm,因为它有自己独特的数据模型,在脚本里要配置好如何将文档数据按向量数据模型的格式存到对应的表中。


假设咱们这里以 Lindorm 为例,准备好数据加载脚本后,运行它:

python3 load_data.py


跑成功的话,会显示相关信息,告诉你加载了多少个文档片段,数据成功存进 Lindorm 了。

3. 查一查:数据到底存进去没?

如果是 PolarDB,咱们可以通过阿里云提供的数据库管理工具,比如 DMS(Data Management Service),登录到 PolarDB 实例,找到对应的数据库和表,查看是否有新存入的数据记录,并且确认数据格式是否正确。


要是 Lindorm,同样可以在 DMS 里找到对应的 Lindorm 集群和表,查看数据是否成功写入。还能利用 Lindorm 的一些特性,比如在向量表中,可以检查向量字段是否正确生成,数据量是否跟预期一致,确保数据存储环节没有问题。


四、试功能!先搜数据,再让 AI 给答案

数据装好了,咱先测 “能不能搜到相关内容”,再测 “能不能让 AI 基于搜到的内容回答”,两步走:

1. 测向量搜索:找最相关的文档

比如想查 “向量嵌入策略的例子”,输这条命令:

# 环境变量跟之前一样,不用重设
python3 vector_search.py "show me an example of a vector embedding policy"


这里的vector_search.py脚本也得根据使用的数据库进行调整。如果是 PolarDB,要编写合适的 SQL 查询语句,利用 PolarDB 的索引和查询优化机制,来实现向量相似度的计算和相关文档的检索。要是 Lindorm,就用它提供的向量检索接口,按照其规定的语法和参数设置,完成查询操作。


程序会算出每个文档跟你问题的相似度(0 到 1,越高越相关),返回前 5 个结果。比如会显示 “Score: 0.74”,下面跟着相关的文档内容,能清楚看到是不是你要的。


想多要几个结果?比如要前 10 个,就在后面加个数:


python3 vector_search.py "show me an example of a vector embedding policy" 10

2. 测 RAG 问答:让 AI 给结构化答案

这步才是最终目的 —— 不用自己翻文档,直接问 AI,它会基于搜到的内容给答案。先设个对话模型的变量,再启动脚本:


# 指定用llama3当聊天模型
export CHAT_MODEL="llama3"
# 启动问答程序
python3 rag_chain.py


在这个rag_chain.py脚本里,同样要根据数据库类型做适配。不管是 PolarDB 还是 Lindorm,都要确保从数据库检索到的相关文档数据,能正确地作为上下文传递给 llama3 模型,让模型基于这些信息生成准确的回答。


等程序初始化完,会提示 “[User]: ”,你就输问题,比如 “show me an example of a vector embedding policy”,AI 会给你一个结构化的答案,比如:


[Assistant]: Here is an example of a vector embedding policy:
{
  "vectorEmbeddings": [
    {
      "path":"/vector1",
      "dataType":"float32",
      "distanceFunction":"cosine",
      "dimensions":1536
    },
    {
      "path":"/vector2",
      "dataType":"int8",
      "distanceFunction":"dotproduct",
      "dimensions":100
    }
  ]
}


还能问更专业的,比如 “阿里云 PolarDB 在高并发场景下如何优化性能?”“Lindorm 的向量检索在大规模数据下的效率如何提升?”,AI 都会基于你存的文档回答,不会瞎编。


交互时还能操作:输 “exit” 退出,“clear” 清聊天记录,“history” 看之前聊了啥,很方便。


五、总结下:这方案好在哪?咋优化?

1. 咱搭的这玩意儿,核心优点很实在

  • 数据安全:文档和模型都在你自己电脑 / 服务器上,不用传云端,敏感数据不怕泄露,合规要求高的场景(比如金融、医疗)也能用。
  • 离线能用:没网的时候照样用,出差、野外作业啥的也不耽误。
  • 省钱:不用给云端 API 按次交钱,一次性部署好,长期用都不额外花钱。

2. 想玩得更溜?可以这么优化

  • 换模型:觉得 Llama 3 不够好,能换成 Mistral 7B、Qwen(通义千问的开源版);觉得跑太慢,换个小模型,比如 Phi-2。
  • 换数据:把示例里的官方文档,换成你公司的产品手册、内部规章,就能搭个 “公司专属智能问答”,同事查东西不用翻文档了。
  • 提速度:要是有显卡,开 GPU 加速,AI 回答会快很多;文档太大的话,按章节、段落拆得细点,搜得更准。


其实这方案不是说要替代云端 AI,而是给咱多一个选择 —— 想数据自己管、想离线用、想省钱,就用这一套。不管是搭个自己用的知识库,还是公司内部的智能助手,跟着步骤走,半天就能搞定,新手也能上手,赶紧试试!

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
人工智能 关系型数据库 MySQL
轻松搭建AI知识问答系统,阿里云PolarDB MCP深度实践
无论是PolarDB MySQL兼容MySQL语法的SQL执行功能,还是其特有的OLAP分析与AI能力,通过MCP协议向LLM开放接口后,显著降低了用户使用门槛,更为未来基于DB-Agent的智能体开发奠定了技术基础
|
6月前
|
关系型数据库 分布式数据库 数据库
一库多能:阿里云PolarDB三大引擎、四种输出形态,覆盖企业数据库全场景
PolarDB是阿里云自研的新一代云原生数据库,提供极致弹性、高性能和海量存储。它包含三个版本:PolarDB-M(兼容MySQL)、PolarDB-PG(兼容PostgreSQL及Oracle语法)和PolarDB-X(分布式数据库)。支持公有云、专有云、DBStack及轻量版等多种形态,满足不同场景需求。2021年,PolarDB-PG与PolarDB-X开源,内核与商业版一致,推动国产数据库生态发展,同时兼容主流国产操作系统与芯片,获得权威安全认证。
|
3月前
|
运维 关系型数据库 分布式数据库
阿里云与云和恩墨强强联手,正式推出zData X for PolarDB一体机
阿里云与云和恩墨的深入合作迈上新台阶!近日,双方强强联手,通过优势互补,正式联合推出高性能、高安稳、高可用的 zData X for PolarDB 一体机。这一突破性合作不仅加速了国产数据库生态建设,也为各行业客户提供了全新升级路径,助力数字化转型。
|
3月前
|
存储 关系型数据库 分布式数据库
客户说|古茗选用阿里云PolarDB,以云端之力解锁茶饮数字化新高度
阿里云PolarDB将持续以“业务价值”为锚点,通过技术迭代与场景化解决方案,让每一笔交易更流畅,让每一份数据更智能,助力古茗实现“每天一杯喝不腻”的日常化国民茶饮愿景。
|
3月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
4月前
|
关系型数据库 分布式数据库 数据库
再获殊荣,阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
内存池化技术新突破,阿里云PolarDB蝉联SIGMOD最佳论文奖
|
1月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
5月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
阿里云PolarDB凭借全球首创基于CXL Switch的分布式内存池技术,在SIGMOD 2025上荣获工业赛道“最佳论文奖”,连续两年蝉联该顶会最高奖项。其创新架构PolarCXLMem打破传统RDMA技术瓶颈,性能提升2.1倍,并已落地应用于内存池化场景,推动大模型推理与多模态存储发展,展现CXL Switch在高速互联中的巨大潜力。
阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
|
4月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。