本地大模型编程实战(18)RAG(Retrieval Augmented Generation,检索增强生成)(2)


本文将使用 langgraph 实现一个简单的 RAG(Retrieval Augmented Generation,检索增强生成) 系统。

使用 qwen2.5deepseek-r1 以及 llama3.1 做实验,用 shaw/dmeta-embedding-zh 做中文嵌入和检索。

关于 RAG

RAG(Retrieval Augmented Generation,检索增强生成) 是一种 结合检索(Retrieval)与 生成(Generation) 的AI技术,用于提升 LLM(大语言模型) 的回答质量。
典型的 RAG 应用程序有两个主要组件:

  • 索引:从源中提取数据并对其进行索引。这通常是离线进行的。
  • 检索和生成:它在运行时接受用户查询并从索引中检索相关数据,然后将其传递给模型。

索引

  • 加载:首先,我们需要加载数据。这可以通过文档加载器完成。langchain 提供了 html、csv、pdf 等诸多加载器。
  • 拆分:文本拆分器将大型文档拆分成较小的块。这对于索引数据和将其传递到模型都很有用,因为大块数据更难搜索,并且不适合模型的有限上下文窗口。
  • 存储:我们需要一个地方来存储和索引我们的拆分,以便以后可以搜索它们。这通常使用 VectorStore 和 Embeddings 模型来完成。

嵌入过程

检索和生成

  • 检索:给定用户输入,使用检索器从存储中检索相关分割后的文档。
  • 生成:ChatModel/LLM 使用包含问题和检索到的数据的提示词生成答案。

检索和生成过程

准备

在正式开始撸代码之前,需要准备一下编程环境。

  1. 计算机
    本文涉及的所有代码可以在没有显存的环境中执行。 我使用的机器配置为:

    • CPU: Intel i5-8400 2.80GHz
    • 内存: 16GB
  2. Visual Studio Code 和 venv
    这是很受欢迎的开发工具,相关文章的代码可以在 Visual Studio Code 中开发和调试。 我们用 pythonvenv 创建虚拟环境, 详见:
    在Visual Studio Code中配置venv

  3. Ollama
    Ollama 平台上部署本地大模型非常方便,基于此平台,我们可以让 langchain 使用 llama3.1qwen2.5deepseek 等各种本地大模型。详见:
    在langchian中使用本地部署的llama3.1大模型

创建矢量数据库对象

我们直接使用之前使用 chroma 创建好的本地嵌入数据库,它的数据源是一个 csv 文件,每一行包含了一种动物的信息,例如:

名称,学名,特点,作用
狗,Canis lupus familiaris,忠诚、聪明、社交性强,看家护院、导盲、搜救、警务、情感陪伴
猫,Felis catus,独立、高冷、善于捕鼠,消灭害鼠、陪伴、缓解压力

详细的创建过程可参见:本地大模型编程实战(14)初探智能体Agent(1)

embed_model_name = "shaw/dmeta-embedding-zh"
vector_store = Chroma(persist_directory=get_persist_directory(embed_model_name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值