使用 硅基流动+Doris+DeepSeek搭建RAG知识库(保姆级教程)
使用用硅基流动+Doris+DeepSeek搭建RAG知识库(保姆级教程)
什么是RAG?
检索增强生成(Retrieval-Augmented Generation)是一种将知识库检索与大语言模型生成相结合的技术架构。
通过Doris实时检索业务知识,DeepSeek进行语义理解,硅基流动提供弹性算力,实现以下优势:
- 解决大模型知识时效性瓶颈(如DeepSeek默认知识截止至2024年7月)
- 突破企业私有数据壁垒(支持导入内部文档、代码库等非公开资料)
- 降低幻觉现象(回答基于检索到的权威内容)
硅基流动
硅基流动是专为AI应用设计的弹性算力平台,提供:
- 多模态模型API调用(支持嵌入式部署)
- 分布式GPU资源调度
- 企业级数据隐私保护
- 动态流量负载均衡(应对突发高并发场景)
硅基流动官网 提供2000万免费Token及华为云昇腾算力支持,显著降低企业AI落地成本.
硅基流动 注册即赠送14元额度,约2000万免费Token,方便测试。
二、环境搭建(手把手教学)
Doris集群部署
硬件配置推荐
生产环境最低配置(三节点集群示例)
# 生产环境最低配置(三节点集群示例)
节点类型 | CPU | 内存 | 磁盘
---------------------------------
FE | 8核 | 16GB | 200GB SSD
BE | 16核 | 64GB | 2TB NVMe
快速安装流程
#使用Docker部署(开发测试环境)
git clone https://github.com/apache/doris
cd doris/docker
./build.sh --tag latest --build-arg FROM=ubuntu:18.04
./run.sh --image apache/doris:latest
关键配置调优
-- 创建知识库专用数据库
CREATE DATABASE rag_db;
-- 建表语句(支持向量检索)
CREATE TABLE doc_store (id BIGINT,content TEXT,embedding ARRAY<FLOAT>,file_path VARCHAR(255)
) ENGINE=olap
DUPLICATE KEY(id)
PARTITION BY RANGE(id)()
DISTRIBUTED BY HASH(id) BUCKETS 10;
2.2 Python环境准备
# 创建虚拟环境
conda create -n rag python=3.8
conda activate rag # 安装核心依赖库
pip install pymysql sqlalchemy markdown numpy
pip install siliconflow-sdk --extra-index-url https://pypi.siliconflow.com
知识库构建实战
Markdown文档处理
import os
from markdown import markdown def process_markdown(folder_path):docs = []for root, _, files in os.walk(folder_path): for file in files:if file.endswith(".md"): path = os.path.join(root, file)with open(path, 'r') as f:html = markdown(f.read()) docs.append({ 'content': html,'path': path })return docs
数据入库Doris
from sqlalchemy import create_engine def load_to_doris(docs):engine = create_engine('mysql+pymysql://user:pass@fe_host:9030/rag_db')for idx, doc in enumerate(docs):# 生成向量嵌入(示例伪代码)embedding = siliconflow.embed(doc['content']) engine.execute(f""" INSERT INTO doc_store VALUES ({idx}, '{doc['content']}', [{','.join(map(str, embedding))}], '{doc['path']}')""")
#智能问答系统开发
检索增强流程设计
4.2 核心调用代码
from siliconflow import AISession def rag_query(question):# 语义检索 query_embed = siliconflow.embed(question) results = doris_search(query_embed) # Doris向量查询 # 增强提示 context = "\n".join([r.content for r in results[:3]])prompt = f"基于以下知识:\n{context}\n请回答:{question}"# 调用DeepSeek with AISession(api_key="硅基流动key密钥") as ai:response = ai.generate( model="deepseek-r1-32b",prompt=prompt,temperature=0.3 )return response.text
密钥登录 硅基流动官网 获取
避坑指南
- 向量维度对齐:确保硅基流动的嵌入维度与Doris表结构定义一致
- 分词策略优化:中文文档建议采用jieba+同义词词典预处理
- 并发控制:硅基流动API默认QPS=5,需申请企业级配额
- 数据安全:敏感文档建议启用Doris的透明加密功能
- 源码获取:访问硅基流动开发者平台 获取完整项目模板