基于LLamaIndex框架实现RAG基础聊天(一)

一、项目搭建:

1.创建虚拟环境,查看当前环境模块列表

在这里插入图片描述

2.安装llamaindex框架

提示:如果出现无法安装的情况,请记得打开魔法工具
官方文档:https://docs.llamaindex.ai/en/stable/

pip install llama-index

使用模块信息显示命令,查看是否成功安装

pip show llama-index

在这里插入图片描述


二、实现基础聊天功能:

1.注册deepseek账号

官网:https://www.deepseek.com/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建 API 时请记得将其保存到本地,因为 API 只会显示一次

2.配置key值

在目录下创建llms.py
在这里插入图片描述
llms.py代码

from typing import Dict
from llama_index.llms.openai import OpenAI
from llama_index.llms.openai.utils import ALL_AVAILABLE_MODELS, CHAT_MODELS

# 定义DeepSeeK模型及其对应的上下⽂⼤⼩
# 这⾥添加了"deepseek-chat"模型,其上下⽂⼤⼩为64000
DEEPSEEK_MODELS: Dict[str, int] = {
    "deepseek-chat": 64000,
}
# 更新所有可⽤模型的字典,添加DeepSeeK模型
ALL_AVAILABLE_MODELS.update(DEEPSEEK_MODELS)
# 更新聊天模型的字典,添加DeepSeeK模型
CHAT_MODELS.update(DEEPSEEK_MODELS)


def deepseek_llm(**kwargs):
    """
    创建并返回DeepSeek聊天语言模型实例
    :param kwargs:
    :return:
    """
    llm = OpenAI(api_key="",
                 model="deepseek-chat",
                 api_base="https://api.deepseek.com/v1",
                 temperature=0.7,
                 **kwargs)
    return llm

关于OpenAI配置参数:

  • api_key:这是用来授权访问OpenAI API的密钥。在实例化时需要提供有效的API密钥以确保可以连接到API服务
  • model:指定使用的模型名称为deepseek-chat
  • api_base:这是API的基础URL。它指明了要连接的服务的地址。在这里是DeepSeek服务的API端点。结尾v1是版本号,目前是v1至v3版本,可以根据需求自行切换
  • temperature:这是控制生成文本的随机性和创造性的参数,范围通常在0到1之间。较高的温度值(如0.7)会导致生成文本更加多样化和随机,较低的值则使得结果更加确定和一致。

大家根据自己的API和需求自行填写及选择,这里我就采用v1版本演示

3.配置启动文件

创建main.py文件配置启动文件

在这里插入图片描述
main.py代码

from llama_index.core import Settings
from llama_index.core.chat_engine import SimpleChatEngine
# 从自定义llm,py文件中导入deepseek LLM实例,⽤于处理语⾔模型相关的任务
from llms import deepseek_llm

# 设置全局的LLM实例为deepseek LLM,配置模型和其他资源
Settings.llm = deepseek_llm()
# 创建一个简单的聊天引擎实例,采用默认配置
chat_engine = SimpleChatEngine.from_defaults()
# 采用流式输出,启动聊天引擎,进行读取-评估-打印循环(repl)
# 此方法允许用户与聊天引擎进行实时交互,输入命令或提问,可以及时响应
chat_engine.streaming_chat_repl()

配置完后,启动main.py文件
如果出现以下报错在这里插入图片描述
错误信息显示,问题发生在 requests 库中,具体是因为它无法从 simplejson 中导入 JSONDecodeError,只需安装一下simplejson库或者更新一下requests库

pip install simplejson
pip install --upgrade requests

那么,我们重新启动一下main.py文件

在这里插入图片描述
我们进行一个提问

在这里插入图片描述
需要退出的话直接输入exit即可

在这里插入图片描述
现在一个基于LLamaIndex框架实现的简单聊天引擎就实现了,想体验一下的朋友,快快自己手动实现吧

### 使用 LlamaIndex 实现 RAG 技术 #### 创建索引结构 为了实现检索增强生成(RAG),首先需要构建个高效的索引结构来存储和管理文档的数据嵌入向量。这步骤对于提高后续查询的速度至关重要[^3]。 ```python from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader documents = SimpleDirectoryReader('data').load_data() index = GPTSimpleVectorIndex.from_documents(documents) ``` 此代码片段展示了如何加载本地文件夹中的文档并将其转换成适合用于创建索引的形式,之后通过 `GPTSimpleVectorIndex` 类实例化了个基于这些文档的新索引对象。 #### 构建问答数据集 在准备好了基础架构后,下步就是为训练模型准备好合适的输入——即问题及其对应的上下文对。可以借助于 `generate_question_context_pairs()` 函数自动生成这样的配对集合[^2]。 ```python from llama_index.core.evaluation import generate_question_context_pairs qa_dataset = generate_question_context_pairs( nodes=index.get_nodes(), llm=llm, num_questions_per_chunk=2 ) ``` 这里调用了 `get_nodes()` 方法获取之前建立好的索引内的节点列表作为参数传递给上述函数;同时指定了每段文本应该产生的问题数量。 #### 执行检索与生成过程 最后,在拥有完整的索引以及足够的训练样本之后,就可以开始执行真正的 RAG 流程了:当接收到用户的自然语言请求时,先利用已有的索引来查找最有可能包含答案的部分文档段落;接着把这些选出来的片段连同原始提问起送入预训练的语言模型中完成最终的回答生成工作[^1]。 ```python query_engine = index.as_query_engine() response = query_engine.query("请问什么是检索增强生成?") print(response.response) ``` 这段脚本说明了怎样设置好查询引擎并通过它来进行次具体的交互操作。用户提出的任何问题都会被转交给底层的索引机制去寻找最佳匹配项,并返回由大型语言模型给出的结果字符串形式的答案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值