Deepseek + RAG:创建本地运行智能体

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

     【按照依赖包报错时,可以试试使用国内的镜像源来安装 Python 包,例如使用清华大学的镜像:    pip install your-package -i https://pypi.tuna.tsinghua.edu.cn/simple】

     【如果再次报错,可能会提示Microsoft Visual C++ 14.0 or greater is required,意味着缺少Microsoft C++ 生成工具 - Visual Studio 

  1. 设置环境变量
    配置本地环境以使用 Ollama:
    export OPENAI_BASE_URL=http://localhost:11434/v1
    export OPENAI_API_KEY=fake-key

       【注意:export是Linux系统中用于设置或显示环境变量的命令。如果Windows系统,需要用set 命令,即将export改成set】

构建 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)

    【可能会报错,如"PermissionError: [WinError 5] 拒绝访问" ,这时通过以管理员身份启动 cmd 解决了上述问题。

     【经常会报错,Error in chat completion: Request timed out. 目前没有找到解决方案】

创建用户界面(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

【经常会报错,Error in chat completion: Request timed out. 目前没有找到解决方案,推测和本地计算机性能有关。】

<think>好的,我需要回答用户关于如何在本地部署DeepSeekRAGlow模型或服务的问题。首先,我需要明确用户的需求,他们可能希望在自己的服务器或本地环境中部署这两个服务,以便更好地控制数据隐私或集成到现有系统中。 首先,关于DeepSeek模型的本地部署。根据我的知识,DeepSeek是一家中国的人工智能公司,可能提供多种模型,比如自然语言处理模型。本地部署通常需要获取模型文件、安装依赖、配置环境,并可能涉及API服务的搭建。但我不确定DeepSeek是否公开了他们的模型或提供了本地部署的文档。可能需要用户访问他们的官方网站或联系他们的技术支持获取详细信息。 然后是RAGlow,用户可能指的是RAG Flow,这是一个结合检索增强生成(RAG)的工作流系统。根据之前的引用[1],RAG Flow提供了API集成,但用户现在需要本地化部署。本地部署可能需要下载源码或Docker镜像,配置环境变量,设置数据库,以及启动服务。例如,使用Docker Compose来部署相关服务组件,如向量数据库、模型服务等。此外,RAG Flow可能需要依赖如PostgreSQL、Redis等数据库,以及深度学习框架如TensorFlow或PyTorch。 接下来,我需要检查用户提供的引用内容。引用[1]提到RAG Flow的API集成步骤,包括获取API key、创建会话ID、发送请求等。但本地部署可能需要不同的步骤,比如安装依赖、配置模型路径、设置网络端口等。如果RAG Flow提供了Docker镜像,用户可以通过Docker命令拉取镜像并运行容器,同时绑定必要的端口和卷。 对于DeepSeek,如果他们没有提供本地部署的文档,用户可能需要自行构建模型服务,比如使用Hugging Face的Transformers库加载模型,并搭建一个简单的Flask或FastAPI服务来提供API接口。这需要用户具备一定的机器学习部署知识,包括模型转换、优化和服务器配置。 用户可能遇到的问题包括依赖项冲突、模型文件过大、硬件资源不足(如GPU内存)、网络配置错误等。需要建议用户查看官方文档,加入社区论坛寻求帮助,或者参考类似的部署案例。 最后,生成相关问题时,需要考虑用户可能感兴趣的后续步骤,比如性能优化、监控、扩展性等,以及如何将本地部署的服务集成到现有应用中。</think>### DeepSeek-RAGlow本地化部署指南 ### 一、DeepSeek模型本地部署 1. **模型获取** - 需通过DeepSeek官网申请企业级模型许可,获取$model\_files.zip$和$deployment\_guide.pdf$ - 包含模型权重文件(如$deepseek-7b-hf$)、推理脚本及API服务框架 2. **环境配置** ```bash conda create -n deepseek python=3.10 conda install pytorch torchvision torchaudio cudatoolkit=11.7 -c pytorch pip install transformers fastapi uvicorn ``` 3. **启动API服务** ```python from fastapi import FastAPI from transformers import AutoModelForCausalLM, AutoTokenizer app = FastAPI() model = AutoModelForCausalLM.from_pretrained("./model_weights") tokenizer = AutoTokenizer.from_pretrained("./tokenizer") @app.post("/generate") async def generate_text(prompt: str): inputs = tokenizer(prompt, return_tensors="pt") outputs = model.generate(**inputs) return {"response": tokenizer.decode(outputs[0])} ``` 启动命令:`uvicorn main:app --host 0.0.0.0 --port 8000` ### 二、RAGlow本地部署 1. **容器化部署(推荐)** ```bash docker pull ragflow/ragflow:2.1.0 docker run -d -p 8001:8001 \ -v /data/ragflow:/app/data \ -e DB_URL=postgresql://user:pass@localhost:5432/ragflow \ ragflow/ragflow ``` 2. **组件依赖** - PostgreSQL 14+ 用于元数据存储 - Milvus 2.3+ 作为向量数据库 - MinIO 作为文件存储系统 3. **配置对接DeepSeek** 修改$config/model\_config.yaml$: ```yaml llm_service: endpoint: "http://localhost:8000/generate" api_key: "deepseek_license_key" ``` ### 三、API文档核心内容 1. **服务状态检查** ``` GET /v1/healthcheck Response: {"status": "ok", "version": "2.1.0"} ``` 2. **知识库管理API** ```python import requests headers = {"Authorization": "Bearer <API_KEY>"} # 创建知识库 requests.post("http://localhost:8001/v1/knowledgebases", json={"name": "技术文档"}, headers=headers) ``` 3. **问答接口示例** ```python response = requests.post( "http://localhost:8001/v1/completion", json={ "question": "如何重置系统密码?", "kb_name": "技术文档" }, headers=headers ) print(response.json()["answer"]) ``` ### 四、验证部署 1. **端到端测试脚本** ```python def test_pipeline(): # 上传测试文档 with open("manual.pdf", "rb") as f: requests.post("/v1/upload", files={"file": f}, headers=headers) # 等待索引完成 time.sleep(60) # 执行问答测试 resp = requests.post("/v1/completion", json={"question": "文档中提到的安全标准是什么?"}) assert "ISO 27001" in resp.json()["answer"] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值