大语言模型添加Rag

一、 什么是 RAG?

大语言模型(如 GLM-4)虽然博学,但有两个致命伤:

  1. 幻觉问题:它会一本正经地胡说八道。

  2. 知识滞后:它不知道你公司昨天的会议纪要,也不知道你个人的私密文档。

RAG 的核心逻辑是:当用户提问时,系统先去你的**私有数据库(ChromaDB)**里检索相关的片段,然后把这些片段和问题一起塞给 AI,让 AI "根据以下参考资料回答问题"。

二、 RAG 的核心流程(五大步骤)

实现 RAG 就像把一本书存进图书馆再借出来的过程:

  1. 加载 (Loading):读取你的文档(PDF、Markdown、TXT 等)。

  2. 分割 (Splitting):由于 AI 一次读不了太长的内容,需要把文档切成 500-1000 字的小块。

  3. 向量化 (Embedding):这是最神奇的一步。利用 Embedding 模型将文字转化为一串数字(向量)。语义相近的话,数字距离就近。

  4. 存储 (Storing) :把这些数字存进 ChromaDB(向量数据库)。

  5. 检索与生成 (Retrieval & Generation)

    • 用户问:"我的项目里前端用了什么技术?"

    • 系统把这个问题也变成向量,去数据库里找最匹配的段落。

    • 将找出的段落 + 原问题发给 GLM-4。

三、 使用 LangChain + ChromaDB 的技术实现

在你的 pythonProject1 后端项目中,你可以按照以下思路集成:

1. 技术栈分工

  • LangChain:框架"胶水",负责串联加载、分割、检索和调用 LLM 的整个流水线。

  • ChromaDB:轻量级向量数据库,负责存储文档向量并进行相似度搜索。

  • Embedding 模型:建议继续使用智谱 AI 提供的 Embedding 接口,保持生态一致。

2. 核心代码逻辑(示意)

你需要安装依赖:

python 复制代码
pip install langchain langchain-community chromadb zhipuai
python 复制代码
from langchain_community.vectorstores import Chroma
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.embeddings import ZhipuAIEmbeddings

# 1. 加载并切分文档
loader = TextLoader("你的技术文档.md")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
texts = text_splitter.split_documents(documents)

# 2. 向量化并存入 ChromaDB
embeddings = ZhipuAIEmbeddings(api_key="你的API_KEY")
vector_db = Chroma.from_documents(documents=texts, embedding=embeddings, persist_directory="./chroma_db")

# 3. 检索
query = "项目的前端框架是什么?"
docs = vector_db.similarity_search(query)

# 4. 构建增强后的 Prompt
context = "\n".join([doc.page_content for doc in docs])
enhanced_prompt = f"请基于以下背景资料回答问题:\n{context}\n\n问题:{query}"

3. 数学原理简述


四、 RAG 有什么用?

  1. 极低成本的"训练":你不需要花费几十万去微调(Fine-tuning)模型,只需把文档扔进数据库,AI 就能学习新知识。

  2. 准确性与溯源:AI 的回答可以要求它标注"来源:技术文档第三章",减少胡编乱造。

  3. 数据安全:敏感文档存在本地 ChromaDB 中,只有检索到的相关片段会发给云端 AI,比直接把全文发给 AI 更安全。

相关推荐
AI服务老曹9 分钟前
GB28181接入AI视频分析常见问题与排查清单:从国标平台注册、通道同步到心跳断线的工程实践
人工智能·音视频
mounter62511 分钟前
BPF 的进化史:从网络过滤器到 AI 时代的 Linux 核心引擎
linux·网络·人工智能·ebpf·linux kernel·kernel
名不经传的养虾人12 分钟前
从0到1:企业级AI项目迭代日记 Vol.65|最危险的故障不是崩溃,是悄悄换掉了正确答案
数据库·人工智能·ai编程·ai-agent·企业ai
程序员佳佳16 分钟前
模型网关灰度不是调百分比:把放量、观测和回滚做成账本
java·数据库·人工智能·redis·gpt·aigc·embedding
CryptoPP18 分钟前
BSE股票K线数据接入实战:从接口调用到前端图表展示
大数据·前端·网络·人工智能·websocket·网络协议
Ulyanov20 分钟前
雷达导引头信号模型与脉冲压缩技术:从理论到工程实现
人工智能·计算机视觉·目标跟踪
JasonMa121026 分钟前
Agent平台工程蓝图_场景逻辑规范(国际对标增强总纲)中
人工智能
望易27 分钟前
相变外驱定理理论
人工智能·架构
JasonMa121036 分钟前
第三部分:工具与多模态能力扩展
人工智能
码农阿强36 分钟前
GPT-5.6 Sol/Terra/Luna 三模型全量上架StartAPI|分层选型+可运行调用代码实战
大数据·人工智能·gpt·ai·aigc