(构建知识库)LlamaIndex框架+InternLM+RAG 实践——L1G4

LlamaIndex+InternLM RAG 实践——L1G4

主要内容:使用LLamaIndex + 大模型InternLM 构建RAG知识库 (以 InternStudio 的环境为例)

  • 任务要求1(必做,参考readme_api.md):基于 LlamaIndex 构建自己的 RAG 知识库,寻找一个问题 A 在使用 LlamaIndex 之前 浦语 API 不会回答,借助 LlamaIndex 后 浦语 API 具备回答 A 的能力,截图保存。注意:写博客提交作业时切记不要泄漏自己 api_key!
  • 任务要求2(可选,参考readme.md):基于 LlamaIndex 构建自己的 RAG 知识库,寻找一个问题 A 在使用 LlamaIndex 之前 InternLM2-Chat-1.8B 模型不会回答,借助 LlamaIndex 后 InternLM2-Chat-1.8B 模型具备回答 A 的能力,截图保存。

1. 前置知识

正式介绍检索增强生成(Retrieval Augmented Generation,RAG)技术以前,大家不妨想想为什么会出现这样一个技术。 给模型注入新知识的方式,可以简单分为两种方式,一种是内部的,即更新模型的权重,另一个就是外部的方式,给模型注入格外的上下文或者说外部信息,不改变它的的权重。 第一种方式,改变了模型的权重即进行模型训练,这是一件代价比较大的事情,大语言模型具体的训练过程,可以参考InternLM2技术报告。 第二种方式,并不改变模型的权重,只是给模型引入格外的信息。类比人类编程的过程,第一种方式相当于你记住了某个函数的用法,第二种方式相当于你阅读函数文档然后短暂的记住了某个函数的用法。

在这里插入图片描述

对比两种注入知识方式,第二种更容易实现。RAG 正是这种方式。它能够让基础模型实现非参数知识更新无需训练就可以掌握新领域的知识。选用了 LlamaIndex 框架。LlamaIndex 是一个上下文增强的 LLM 框架,旨在通过将大模型特定上下文数据集集成,增强大型语言模型(LLMs)的能力。它允许您构建应用程序,既利用 LLMs 的优势,又融入您的私有或领域特定信息。

RAG 效果比对

如图所示,由于xtuner是一款比较新的框架, InternLM2-Chat-1.8B 训练数据库中并没有收录到它的相关信息。左图中问答均未给出准确的答案。右图未对 InternLM2-Chat-1.8B 进行任何增训的情况下,通过 RAG 技术实现的新增知识问答。

在这里插入图片描述

2、浦语 API+LlamaIndex 实践

2.1 配置环境

我这里是在 Intern Studio 服务器上 部署 Llamindex

首先,打开 Intern Studio 界面,点击 创建开发机 配置开发机系统。

在这里插入图片描述

填写 开发机名称 后,点击 选择镜像 使用 Cuda12.0-conda 镜像,然后在资源配置中,使用 30% A100 * 1 的选项,然后立即创建开发机器。

创建成功后,进入开发机,可以在网站上运行开发机,也可以点击ssh连接,然后在本地vscode中连接开发机,本地开发

进入开发机后,创建新的conda环境,命名为 llamaindex,在命令行模式下运行:

conda create -n llamaindex python=3.10

激活环境、

conda activate llamaindex

环境激活后,命令行左边会显示当前(也就是 llamaindex )的环境名称,如下图所示:

在这里插入图片描述

2.2 安装llamaindex 和 python依赖包、

conda activate llamaindex
pip install llama-index==0.11.20
pip install llama-index-llms-replicate==0.3.0
pip install llama-index-llms-openai-like==0.2.0
pip install llama-index-embeddings-huggingface==0.3.1
pip install llama-index-embeddings-instructor==0.2.1
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu121

python依赖包

pip install einops==0.7.0 protobuf==5.26.1

2.3 下载 Sentence Transformer 模型 (进行Embedding)

源词向量模型 Sentence Transformer:(我们也可以选用别的开源词向量模型来进行 Embedding,目前选用这个模型是相对轻量、支持中文且效果较好的,同学们可以自由尝试别的开源词向量模型) 运行以下指令,新建一个python文件

cd ~
mkdir llamaindex_demo
mkdir model
cd ~/llamaindex_demo
touch download_hf.py

打开download_hf.py 贴入以下代码

import os

# 设置环境变量
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

# 下载模型
os.system('huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 --local-dir /root/model/sentence-transformer')

然后,在 /root/llamaindex_demo 目录下执行该脚本即可自动开始下载:

cd /root/llamaindex_demo
conda activate llamaindex
python download_hf.py

2.4 下载NLTK相关资源

我们在使用开源词向量模型构建开源词向量的时候,需要用到第三方库 nltk 的一些资源。正常情况下,其会自动从互联网上下载,但可能由于网络原因会导致下载中断,此处我们可以从国内仓库镜像地址下载相关资源,保存到服务器上。 我们用命令下载 nltk 资源并解压到服务器上:

cd ~
git clone https://gitee.com/yzy0612/nltk_data.
### 构建RAG大模型私有知识库 #### 使用Deepseek和Dify实现本地部署 为了在本地环境中使用Deepseek和Dify构建RAG大模型的私有知识库,需完成一系列配置与集成操作。具体过程涉及环境准备、安装必要的软件包和服务设置。 #### 环境准备 确保拥有适合运行大型语言模型的基础架构,包括但不限于足够的计算资源(CPU/GPU)、内存空间及存储容量。此外,还需准备好支持Python编程的语言环境及相关依赖项[^3]。 #### 安装Deepseek-R1 按照官方文档指导,在服务器上部署Deepseek-r1版本的大规模预训练模型实例。此步骤通常涉及到下载权重文件、调整参数配置以适应硬件条件等操作[^1]。 #### 配置Dify平台 通过Dify提供的API接口或命令行工具连接已部署好的Deepseek-r1服务端口,使两者之间建立有效的通信链路。此时可以测试二者之间的连通性,确认消息传递正常无误[^2]。 #### 创建嵌入式索引 针对目标领域内的文本资料集执行向量化处理,生成对应的embedding表示形式,并将其导入至数据库中形成结构化的索引体系。这一环节对于后续查询效率至关重要。 #### 实现检索增强机制 设计合理的算法逻辑,使得当用户发起咨询请求时,系统能够快速定位最相关的背景信息片段作为辅助材料输入给LLM进行响应合成;同时保持对话流畅性和自然度不受影响。 ```python from dify import DifyClient import deepseek as ds client = DifyClient(api_key='your_api_key') model = ds.load_model('path_to_deepseek_r1') def get_context(query): embeddings = model.encode([query]) results = client.search(embeddings=embeddings, top_k=5) context = " ".join([r['text'] for r in results]) return context ``` 上述代码展示了如何利用Dify客户端API获取与查询语句相似度最高的几个条目,并将它们组合成一段连续的文字串供进一步分析使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值