news 2026/5/23 13:26:00

搭建简易版的Rag系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
搭建简易版的Rag系统

Rag系统搭建

简易RAG(检索增强生成)搭建概述

一、核心原理

RAG = 检索(Retrieval)+ 增强(Augmentation)+ 生成(Generation)
不用微调大模型,先从本地文档找相关内容 → 把内容塞进Prompt → 让大模型基于资料回答,解决AI幻觉、知识库过时问题。

二、整体流程

  1. 文档加载与分块
    读取PDF/TXT/MD等文档,切成小块(Chunk),避免上下文过长、检索不准。
defsplit_into_chunks(doc_file):withopen(doc_file,'r',encoding='utf-8')asfile:content=file.read()return[chunkforchunkincontent.split('\n\n')]chunks=split_into_chunks("你的文档路径",)#将文档划分为几个片段# 导入完成后可以进行检查# for i,chunk in enumerate(chunks):# print(f"[{i},{chunk}")
  1. 文本向量化 & 存入向量库
    用Embedding模型把文本块转成向量,存入轻量向量库(如FAISS、Chroma)。
# 如果运行不显示以下错误,可以跳过这几行代码#(MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: #/shibing624/text2vec-base-chinese/resolve/main/modules.json (Caused by #ConnectTimeoutError(<HTTPSConnection(host='huggingface.co', port=443) at 0x1b570fb5f60>, 'Connection to huggingface.co #timed out. (connect timeout=10)'))"), '(Request ID: 9a7e30b1-4e49-4bae-9f40-8036cc31cfa9)')' thrown while requesting HEAD #https://huggingface.co/shibing624/text2vec-base-chinese/resolve/main/modules.json#Retrying in 1s [Retry 1/5].# 用以下代码的含义:# 1. 用CPU跑,不用显卡# 2. 走国内镜像下载模型,更快更稳importos os.environ["CUDA_VISIBLE_DEVICES"]="-1"os.environ["HF_ENDPOINT"]="https://hf-mirror.com"# 从以下这几行开始写fromsentence_transformersimportSentenceTransformer embedding_model=SentenceTransformer('shibing624/text2vec-base-chinese')defembed_chunk(chunk):embedding=embedding_model.encode(chunk)returnembedding.tolist()''' 进行测试 test_embedding = embed_chunk("测试内容") print(len(test_embedding)) print(test_embedding) '''
  1. 用户提问→相似度检索
    用户问题也转向量,在向量库召回最相似的N个文档片段。
importchromadb chromadb_client=chromadb.EphemeralClient()#创建临时保存chromadb_collection=chromadb_client.get_or_create_collection(name="default")defsave_embedding(chunk,embedding):# 保存块与之对应的embeddingids=[str(i)foriinrange(len(chunk))]chromadb_collection.add(documents=chunk,embeddings=embeddings,ids=ids)save_embedding(chunks,embeddings)defretrieve(query,top_k):# 选出相似度较高的前top_k个片段query_embedding=embed_chunk(query)result=chromadb_collection.query(query_embeddings=[query_embedding],n_results=top_k)returnresult['documents'][0]query="这篇文章的主旨大意是什么?"# 用户提出的问题receive_chunks=retrieve(query,5)#找到整个关键片段# 查看相似的片段fori,chunkinenumerate(receive_chunks):print(f"{i},{chunk}\n")fromsentence_transformersimportCrossEncoderdefrerank(quary,receive_chunks,top_k):#给找到的关键字重新排序,在选出关键片段cross_encode=CrossEncoder('cross-encoder/mmarco-mMiniLMv2-L12-H384-v1')pairs=[(quary,chunk)forchunkinreceive_chunks]scores=cross_encode.predict(pairs)chunk_with_score_list=[(chunk,score)forchunk,scoreinzip(receive_chunks,scores)]chunk_with_score_list.sort(key=lambdapairs:pairs[1],reverse=True)return[chunkforchunk,_inchunk_with_score_list][:top_k]rerank_chunks=rerank(query,receive_chunks,3)# 查看相思的片段fori,chunkinenumerate(rerank_chunks):print(f"[{i}]{chunk}\n")
  1. 构造Prompt→大模型生成答案
    把问题+检索到的片段拼成提示词,传给大模型,生成回答。
fromollamaimportchat#调用大模型,给出作答defgenerate(query,chunks):chunks_content="\n\n".join(chunks)prompt=f""" 你是一个知识助手,请根据用户的问题和下列产生的片段生成准确的回答。 用户问题:{query}相关片段:{chunks_content}请基于上述内容作答,不要编造信息"""print(f"{prompt}\n\n---\n")response=chat(model='qwen2.5:0.5b',messages=[{"role":"user","content":prompt}])returnresponse["message"]["content"]answer=generate(query,chunks)print(answer)#做出回答

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 13:25:17

SculptGL:零安装的Web浏览器3D数字雕刻神器,快速入门完整指南

SculptGL&#xff1a;零安装的Web浏览器3D数字雕刻神器&#xff0c;快速入门完整指南 【免费下载链接】sculptgl DEVELOPMENT STOPPED Im now working on Nomad Sculpt instead 项目地址: https://gitcode.com/gh_mirrors/sc/sculptgl 你是否曾梦想在浏览器中就能创作专…

作者头像 李华
网站建设 2026/5/23 13:19:04

利用Taotoken模型广场为不同职能的Agent匹配合适的大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken模型广场为不同职能的Agent匹配合适的大模型 在企业内部部署多个AI Agent时&#xff0c;一个常见的挑战是如何为不同职…

作者头像 李华
网站建设 2026/5/23 13:18:04

2026年企业账号矩阵第一步:适配性诊断+资源盘点

2026年企业实施账号矩阵管理的第一步是完成「适配性诊断资源盘点」&#xff0c;整个落地流程共分4步完成&#xff0c;适合有获客需求、预算有限、缺专业运营团队的中小企业主与个人博主。作为AI运营工具的代表&#xff0c;章鱼AI-GEO可覆盖全流程的自动化操作需求&#xff0c;降…

作者头像 李华
网站建设 2026/5/23 13:17:32

贴吧Lite:重新定义移动端贴吧体验的开源轻量化客户端

贴吧Lite&#xff1a;重新定义移动端贴吧体验的开源轻量化客户端 【免费下载链接】TiebaLite 贴吧 Lite 项目地址: https://gitcode.com/gh_mirrors/tieb/TiebaLite 贴吧Lite是一款基于现代Android技术栈构建的第三方贴吧客户端&#xff0c;专为追求纯净、高效贴吧浏览体…

作者头像 李华