RAG做本地知识库的技能skill

📅 2026/7/31 10:08:06
RAG做本地知识库的技能skill
RAG 知识库零训练你的机器完美胜任这是目前最主流、最省钱、最适合个人的方案——‌不训练模型而是把文档变成可检索的向量库让大模型基于检索结果回答问题‌。整体架构你的文档PDF/Word/TXT↓文档解析 文本切分↓向量化Embedding 模型↓向量数据库ChromaDB / FAISS↓用户提问 → 检索相关片段 → 大模型生成答案↓本地运行Ollama 免费 API完整代码实现第 1 步安装依赖pip install langchain langchain-community chromadb sentence-transformers ollama pypdf第 2 步文档解析与切分import osfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.document_loaders import PyPDFLoader, TextLoader, Docx2txtLoader# 支持 PDF、Word、TXTdef load_documents(folder_path):documents []for file in os.listdir(folder_path):if file.endswith(.pdf):loader PyPDFLoader(os.path.join(folder_path, file))elif file.endswith(.docx):loader Docx2txtLoader(os.path.join(folder_path, file))elif file.endswith(.txt):loader TextLoader(os.path.join(folder_path, file))else:continuedocuments.extend(loader.load())return documents# 切分文档每块 1000 字重叠 200 字text_splitter RecursiveCharacterTextSplitter(chunk_size1000,chunk_overlap200)docs load_documents(./my_knowledge_base) # 你的文档文件夹chunks text_splitter.split_documents(docs)print(f文档切分为 {len(chunks)} 个片段)//这个里面是有很多问题的。第 3 步向量化 存入本地数据库from langchain.embeddings import HuggingFaceEmbeddingsfrom langchain.vectorstores import Chroma# 使用本地轻量 Embedding 模型不需要联网embeddings HuggingFaceEmbeddings(model_namesentence-transformers/all-MiniLM-L6-v2)# 构建向量数据库本地存储完全离线vectorstore Chroma.from_documents(documentschunks,embeddingembeddings,persist_directory./chroma_db)print(向量数据库创建完成)以上代码都是基于ai 自动生成的实际运行都是需要配置的。第 4 步接入大模型回答问题方案 A免费 API推荐不吃本地资源from langchain.chains import RetrievalQAfrom langchain.llms import OpenAI # 或用智谱等国产 APIqa_chain RetrievalQA.from_chain_type(llmOpenAI(modelgpt-3.5-turbo, temperature0),chain_typestuff,retrievervectorstore.as_retriever(search_kwargs{k: 3}),return_source_documentsTrue)question 我的技能文档里提到了哪些项目管理方法result qa_chain(question)print(回答:, result[result])print(来源:, [doc.metadata for doc in result[source_documents]])‌方案 B本地大模型用 Ollama完全免费离线# 先安装 Ollamahttps://ollama.com/download# 然后下载小模型适合你的老机器ollama pull phi3:mini # 2.3GBCPU 可跑# 或ollama pull gemma2:2b # 1.7GB更轻量from langchain.llms import Ollamallm Ollama(modelphi3:mini)qa_chain RetrievalQA.from_chain_type(llmllm,chain_typestuff,retrievervectorstore.as_retriever(search_kwargs{k: 3}))result qa_chain(我的文档中关于数据处理有哪些内容)print(result[result])在这套方案中本人采用的是ollama的离线模型做的采用的是千问的模型因为我的版本很低使用的老机器做的。依次执行这几个python文件即可处理