部署DeepSeek模型,进群交流最in玩法!
立即加群
发布
社区首页 >专栏 >腾讯云DeepSeek开发RAG应用

腾讯云DeepSeek开发RAG应用

原创
作者头像
用户8800822
发布2025-03-05 09:32:46
发布2025-03-05 09:32:46
610
举报

1、 前言

这篇文章主要是面向初级开发者,适合初学者、没有接触过大模型开发的小白、没有基础想学大模型RAG开发的按照该教程也能踏入开发第一步。主要是介绍通过腾讯云提供的deepseek资源和线上环境,开发一个基于deepseek的RAG系统。RAG开发框架使用的是lamaindex,大模型使用deepseek32B,向量模型使用milkey/dmeta-embedding-zh:f16,rag程序根据给定的txt文件内容进行问答,输入exit退出问答。

2概念和知识点

简单介绍,建议自行详细了解,这里把入门用到的罗列如下。

Python

Ai开发的首选语言,不解释

内置3.11.1

Conda‌

开源的包管理系统和环境管理系统,帮助用户安装、更新、卸载软件包,并创建和管理虚拟环境‌

内置

LLM

Large Language Mode的缩写,意思为大语言模型

Ollama

Ollama 是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计

内置,直接使用

Deepseek

按照参数不同有DeepSeek-R1 1.5B、7B、8B、14B 及 32B

内置,直接使用

向量模型embedding

Embedding模型是一种将离散的符号数据(例如单词、图像、产品ID)转换为连续的向量表示的技术

需要自行安装

LlamaIndex

企业级RAG的开发框架,比langchain轻量化,如果做rag首选推荐

需要安装

Pip

pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能

内置,直接使用

Rag

检索增强生成(Retrieval-augmented Generation),简称RAG,是当下热门的大模型前沿技术之一

自信学习

Chroma

向量数据库 Chroma 是一种专门设计用来高效管理和查询向量数据的数据库系统。

需要安装

3、 注册账号

1、注册账号,微信直接扫码注册账号

https://cloud.tencent.com/act/pro/deepseek2025

注册账号
注册账号

点击立即体验即可。

4、 创建免费的工作空间

分为通用工作空间和高性能工作空间,本次我们申请通用工作空间即可。

创建工作空间
创建工作空间

DeepSeek 体验,低门槛、零基础体验与学习,最高每月可使用12500分钟免费时长兑换

内置 Ollama、DeepSeek-R1 1.5B、7B、8B、14B 及 32B 模型,选择空间规格按照需求

选择空间规格
选择空间规格

建议选择DeepSeek 32B,适合高精度任务,如复杂推理、大规模知识库问答、专业领域内容生成和研究级应用。CPU:64 核,内存:128GB。

后面就是研发环境的准备,速度还是很快的。

启动环境
启动环境

5、 使用线上IDE平台

这个ide就是网页版的vscode,各种功能和电脑本地安装的vscode完全一样,并且直接集成了腾讯云AI编程助手,这个在线的IDE确实很赞,等于有了一个移动的大模型开发工作站,性能和配置很够用,速度也很快,功能很强大,初学者省去了购置昂贵的电脑设备,环境一步到位,可以直接专注于开发。

主界面
主界面

头部

终端
终端

终端下拉出来新建终端。

输入 python

看到默认安装版本3.11.1

输入CTRL+Z退出继续输入

代码语言:txt
复制
Olama list

内置Deepseek列表
内置Deepseek列表

输入

代码语言:txt
复制
conda -V

发现预装了conda 23.5.2

Conda这个软件主要是用来管理多个虚拟环境的,运行github上的开源项目,不同的项目需要不同的python环境和依赖包,通过conda,可以为项目创建独立的运行环境隔离起来,避免产生各种冲突。

代码语言:txt
复制
 pip --version 

显示系统已经内置了版本是25.0.1

可以看到开发环境内置了工具软件,省去了初学者配置开发环境的时间,这些第一次接触往往比较麻烦,很容易配置运行不成功,很多人这个环境阶段就被劝退了。

6 开始RAG实战

前面我们看到开发环境已经ok了,后面直接实现一个基于deepseek的rag系统,该系统完全私有化部署,不使用任何云服务,支持对上传文件的检索。

6.1 环境和依赖包安装

创建一个rag的目录,下面创建data目录放txt文件,为简单演示txt找了比较小的一段公司介绍文本上传到data目录下,rag目录下创建一个deepseekrag.py的文件复制代码过去,创建一个独立的myrag的虚拟环境并激活,按照步骤安装依赖包,新建终端启动chroma以服务模式运行,在rag目录下运行python deepseekrag.py,运行成功提问“合正云的成立时间”,可以看到deepseek的思考过程,并准确的给出了答案,这样一个完全本地私有化的,使用deepseek模型的rag系统就完成了,具体步骤如下。

(1) 创建一个rag目录存放代码

cd rag

(2) rag目录下创建data,上传测试tx文件

Txt文件可以百度百科随便找一段复制内容,后面问里面的问题即可。

(3) 安装向量模型milkey/dmeta-embedding-zh:f16

代码语言:txt
复制
ollma pull milkey/dmeta-embedding-zh:f16

(4) 创建一个虚拟的开发环境并激活

环境名称为myrag,python的版本是3.12.2

代码语言:txt
复制
conda create --name myrag python=3.12.2

成功后激活环境

代码语言:txt
复制
conda activate myrag 

(5) 安装依赖包主要有如下

在rag目录下执行

代码语言:txt
复制
pip install -r requirements.txt

requirements.txt内容如下

代码语言:txt
复制
llama_index
chromadb
llama_index.vector_stores.chroma
llama_index.llms.ollama
llama_index.embeddings.ollama

(6) 编写deepseekrag.py

复制后面的代码到文件保存即可

(7) 启动chroma向量服务

在rag目录下运行即可

代码语言:txt
复制
chroma run --path ./chromadb

(7) 运行程序

rag目录下执行

代码语言:txt
复制
 python deepseek.py

6.2 程序代码解读

程序比较清晰简单,主要有6个步骤完成,设置模型-->加载读取文档-->分块分割文-->备向量存储-->向量化生成索引-->查询流式输出。 具体代码如下,直接复制运行即可。

代码语言:txt
复制

import chromadb
from llama_index.core import VectorStoreIndex,StorageContext
from llama_index.core import SimpleDirectoryReader,Settings
from llama_index.core.node_parser import SentenceSplitter
from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.llms.ollama import Ollama
from llama_index.embeddings.ollama import OllamaEmbedding
from llama_index.core.callbacks import (
CallbackManager,
LlamaDebugHandler,
CBEventType,
)
#设置模型,注意因为腾讯云服务环境ollma的端口是8434,所有要正确设置base_url参数
Settings.llm = Ollama(model="deepseek-r1:32b",base_url='http://localhost:8434')
Settings.embed_model = OllamaEmbedding(model_name="milkey/dmeta-embedding-zh:f16",base_url='http://localhost:8434')
#加载与读取文档,这里是读取目录下的文件
reader = SimpleDirectoryReader("/workspace/Deepseek-R1-Chat-32B/rag/data")
documents = reader.load_data()
#分割文档
node_parser = SentenceSplitter(chunk_size=200, chunk_overlap=20)
#show_progress设置为true可以看到nodes的创建进度
nodes = node_parser.get_nodes_from_documents(documents, show_progress=True)
#准备向量存储,请确定向量数据据启动,端口是8000
chroma = chromadb.HttpClient(host="localhost", port=8000)
#chroma.delete_collection(name="ragdb")
collection = chroma.get_or_create_collection(name="ragdb", metadata={"hnsw:space": "cosine"})
vector_store = ChromaVectorStore(chroma_collection=collection)
#准备向量存储索引
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex(nodes,storage_context=storage_context)
#构造查询引擎,采用流式输出,如果输入exit则退出
query_engine = index.as_query_engine(
 streaming=True,
)
while True:
 user_input = input("请输入问题:")
 if user_input.lower() == "exit":
 break
 streaming_response = query_engine.query(user_input)
 streaming_response.print_response_stream()
llama_debug = LlamaDebugHandler(print_trace_on_end=True)
pprint.pprint(llama_debug.get_event_pairs(CBEventType.QUERY))

6.3 常见问题

1、ValueError: Could not connect to a Chroma server. Are you sure it is running?

Chroma服务未启动,进入到rag目录下执行chroma run --path ./chromadb

2、怎么上传文件

左侧目录导航的文件夹右键弹出找到上传点击即可

7 总结

可以看到接入deepseek的rag系统开发起来并不难,后面可以有很多完善的地方,开发环境已经准备好了,完全可以根据这个简单的rag系统继续完善功能,如可以写一个前端页面,提供常见文档格式的上传,有了UI后更像一个系统,要做的功能和优化的地方还有很多,毕竟通过这个简单的例子入门了,这就迈出了很重要的第一步!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、 前言
  • 2 、概念和知识点
  • 3、 注册账号
  • 4、 创建免费的工作空间
  • 5、 使用线上IDE平台
  • 6 开始RAG实战
    • 6.1 环境和依赖包安装
    • 6.2 程序代码解读
    • 6.3 常见问题
  • 7 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档