RAG 系统源码实现(结合 DeepSeek)

RAG 核心逻辑:用户提问→检索知识库相关内容→拼接为上下文→调用 DeepSeek 生成回答。

1. 检索模块(基于向量库)

python

def retrieve_knowledge(query, top_k=3):    # 从向量库检索Zui相关的3个chunk    docs = vector_db.similarity_search(query, k=top_k)    # 拼接检索结果为上下文    context = "\n\n".join([doc.page_content for doc in docs])    # 提取来源信息(用于引用显示)    sources = [doc.metadata for doc in docs]    return context, sources

2. 问答生成(结合 DeepSeek)

python

def rag_qa(query):    # 1. 检索知识库    context, sources = retrieve_knowledge(query)        # 2. 构建提示词(Prompt Engineering)    prompt = f"""    你是公众号专属AI助手,需基于以下知识库内容回答用户问题。    知识库内容:    {context}        用户问题:{query}        回答要求:    1. 严格依据知识库内容,不编造信息;    2. 若知识库无相关内容,直接回复“该问题暂未收录,可补充信息后再问”;    3. 结尾注明信息来源(如:来源:《文章》)。    """        # 3. 调用本地DeepSeek生成回答    response = generate_response(prompt)  # 复用前文模型推理函数        # 4. 拼接来源信息    source_str = "\n".join([f"来源:《{s['source']}》" for s in sources])    return f"{response}\n\n{source_str}"

公众号 AI 系统软件开发全流程

1. 系统架构设计

deepseek本地部署公众号知识库AI人工智能RI源码大模型软件开发
模块技术选型功能描述
前端交互微信公众号 H5(Vue3)用户提问输入、回答展示、历史记录
后端服务FastAPI + Celery(异步任务)接收请求、调度 RAG 流程、调用模型
模型服务DeepSeek 本地部署(GPU 服务器)负责文本生成
知识库服务Chroma + 定时更新脚本向量存储、每日同步公众号新文章
数据存储SQLite(用户数据)+ 本地文件(向量)存储用户对话历史、知识库向量数据

2. 公众号对接(核心交互流程)

(1)公众号消息接收与回复

通过微信公众平台开发者模式,配置服务器 URL(后端 API 接口),接收用户消息并调用 RAG 接口:


python

# FastAPI接收公众号消息示例from fastapi import Request@app.post("/wechat/callback")async def wechat_callback(request: Request):    data = await re()  # 解析微信XML消息    user_query = data.find("Content").text  # 获取用户提问    openid = data.find("FromUserName").text  # 用户唯一标识        # 调用RAG生成回答    answer = rag_qa(user_query)        # 回复用户(XML格式)    return f"""                            {int(time.time())}                        """(2)定时更新知识库

通过 Celery 定时任务每日同步公众号新文章:


python

from celery import Celeryfrom celery.schedules import crontabapp = Celery('wechat_kg', broker='redis://localhost:6379/0')# 每天凌晨2点更新知识库app.conf.beat_schedule = {    'update-wechat-knowledge': {        'task': 'tasks.update_kb',        'schedule': crontab(hour=2, minute=0),    },}# 任务:爬取新文章并更新向量库@app.taskdef update_kb():    new_articles = crawl_new_articles()  # 爬取当日新文章    for article in new_articles:        process_and_add_to_db(article)  # 预处理并添加到向量库

3. 性能优化

检索加速 :对高频查询词建立缓存(Redis),缓存有效期 1 小时。
- 模型推理优化 :使用vllm部署 DeepSeek(支持 PagedAttention, throughput 提升 3-5 倍)。
- 批量处理 公众号文章更新采用批量嵌入(一次处理 10 篇),减少向量库写入次数。

关键注意事项

1.合规性 :公众号文章爬取需遵守《微信公众平台运营规范》,避免商用侵权;用户数据存储需符合《个人信息保护法》。
2. 硬件成本 :7B 模型本地部署Zui低需 RTX 3090(约 1 万元),若预算有限可先使用 CPU 推理(速度较慢,适合测试)。
3. 效果调优 通过调整top_k(检索数量)、提示词模板、文本分割长度优化回答准确性,建议top_k=3-5效果zuijia。