
学习如何通过 DeepSeek RAG(检索增强生成),构建本地运行的智能 RAG 聊天机器人!本教程将带您逐步了解如何利用 RAG 技术,结合 AI 推理和知识检索能力,创建更加准确且知识丰富的 AI 响应。
您将学到
- DeepSeek RAG 智能体的完整配置,并使用 Ollama 在本地部署运行。
- 逐步实现,通过简单的代码轻松完成开发。
- 用户界面(UI)开发,使用 Streamlit 创建交互式 AI 聊天界面。
- 防止 AI 幻觉(生成虚假信息),借助 RAG 提高回答准确性。
- 同自定义知识库整合,为您的 AI 添加专业知识。
为什么选择 RAG?
RAG 是 AI 技术的未来,它通过动态知识检索增强了传统 AI 的能力。以下是 RAG 的核心优势。
- 实时更新知识库,确保 AI 始终获取最新信息。
- 自动优化上下文,提升回答的相关性。
- 通过深度上下文感知,让 AI 能够检索并理解更复杂的背景信息。
- 通过动态知识检索,显著减少 AI 的幻觉(生成虚假回答),提升回答准确性。
- 结合 AI 推理与知识检索,解锁超人类的信息处理能力。
核心技术
构建智能 RAG 聊天机器人需要以下关键技术。
- DeepSeek R1:一个先进的 70 亿参数蒸馏大语言模型,在多项基准测试中表现优异,甚至超越了一些主流模型。
- Ollama:一个可以本地运行模型的平台,用于部署 DeepSeek R1。
- NOMIC Embed Text:用于将文本数据嵌入为数值表示,以便进行语义搜索。
- Streamlit:一个 Python 库,用于构建直观的交互式用户界面。
- AI Agents Framework:简化智能体创建和管理的框架。
前置条件
- Python 编程基础:熟悉 Python 语法和编程逻辑。
- AI 概念理解:了解大语言模型(LLM)和嵌入技术的基本原理。
- 本地开发环境:确保已安装 Python,并能使用终端运行命令。
安装步骤
按照以下步骤,在本地环境中搭建 DeepSeek RAG。
-
下载 Ollama
访问 Ollama 官方网站 并下载适合您操作系统的版本。 -
拉取 DeepSeek R1 模型
在终端中运行以下命令以下载 DeepSeek R1 模型:
ollama pull deepseek-r1
-
下载 NOMIC Embed Text
运行以下命令以下载文本嵌入模型:
ollama pull nomic-embed-text
-
安装依赖库
安装所需的 Python 包,包括 PraisonAI Agents 和 Streamlit:
pip install "praisonaiagents[knowledge]" ollama streamlit
-
设置环境变量
配置本地环境以使用 Ollama:
export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_API_KEY=fake-key
构建 DeepSeek RAG 聊天机器人
索引知识(Indexing)
索引是将自定义知识(例如 PDF 文档)存储到数据库中的过程,以便后续检索和回答问题。
查询知识(Querying)
查询是向 AI 智能体提问的过程,智能体通过 RAG 从数据库中检索相关知识,并结合推理生成精确的答案。
以下是一个简单的 Python 示例,展示如何构建 DeepSeek RAG 聊天机器人。
from praisonaiagents import Agent
# 定义配置
config = {
"vector_store": {
"provider": "chroma",
"config": {
"collection_name": "praison",
"path": ".praison"
}
},
"llm": {
"provider": "ollama",
"config": {
"model": "deepseek-r1:latest",
"temperature": 0,
"max_tokens": 8000,
"ollama_base_url": "http://localhost:11434",
}
},
"embedder": {
"provider": "ollama",
"config": {
"model": "nomic-embed-text:latest",
"ollama_base_url": "http://localhost:11434",
"embedding_dims": 1536
}
}
}
# 初始化智能体
agent = Agent(
name="知识智能体",
instructions="根据提供的知识回答问题。",
knowledge=["custom-document.pdf"], # 替换为您的 PDF
knowledge_config=config,
user_id="user1",
llm="deepseek-r1"
)
# 提问
response = agent.start("什么是 KAG?")
print(response)
创建用户界面(UI)
使用 Streamlit,您可以轻松为 RAG 智能体创建交互式聊天界面。以下是一个简单的实现示例:
import streamlit as st
from praisonaiagents import Agent
# 初始化智能体
def init_agent():
config = {
# 与上面的配置相同
}
return Agent(
name="知识智能体",
instructions="根据提供的知识回答问题。",
knowledge=["custom-document.pdf"],
knowledge_config=config,
user_id="user1",
llm="deepseek-r1"
)
# Streamlit 用户界面
st.title("DeepSeek RAG 聊天机器人")
agent = init_agent()
prompt = st.text_input("请输入您的问题:")
if prompt:
response = agent.start(prompt)
st.write("AI 回答:", response)
运行应用程序:
streamlit run app.py
评论(2)
请问在Windows系统上运行这段代码 为什么总是答复超时 当我放弃使用praisonaiagents库 转用requests库手动测试的时候ollama是可以答复的 求解答!
praisonaiagents 库依赖 ollama 在本地提供服务,你看一下ollama 服务是否正常启动,如果 ollama 服务未启动,或者监听的端口配置错误,可能导致请求超时。