学习如何通过 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。

  1. 下载 Ollama
    访问 Ollama 官方网站 并下载适合您操作系统的版本。
  2. 拉取 DeepSeek R1 模型
    在终端中运行以下命令以下载 DeepSeek R1 模型:
    ollama pull deepseek-r1
  3. 下载 NOMIC Embed Text
    运行以下命令以下载文本嵌入模型:
    ollama pull nomic-embed-text
  4. 安装依赖库
    安装所需的 Python 包,包括 PraisonAI Agents 和 Streamlit:
    pip install "praisonaiagents[knowledge]" ollama streamlit
  5. 设置环境变量
    配置本地环境以使用 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