从零到一:搭建本地 RAG 推理服务
本教程从零搭建一个完全本地化的 RAG 问答服务。
项目概述
功能
- 文档导入与分块
- 本地 Embedding 向量化
- 向量存储与检索
- 本地 LLM 生成回答
技术栈
- LLM:Ollama (llama3)
- Embedding:Ollama 内置或 nomic-embed-text
- 向量库:Chroma
- 框架:LangChain
第一步:安装与模型准备
# 安装 Ollama 并拉取模型
ollama pull llama3
ollama pull nomic-embed-text # 可选 ,用于 Embedding
第二步:安装依赖
pip install langchain langchain-community chromadb
第三步:构建 RAG 流程
from langchain_community.llms import Ollama
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
# 文档加载与分块
loader = TextLoader("your_doc.txt")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = splitter.split_documents(docs)
# 向量化与存储
embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(splits, embeddings)
# RAG 链
llm = Ollama(model="llama3")
qa = RetrievalQA.from_chain_type(llm, retriever=vectorstore.as_retriever())
answer = qa.invoke("你的问题")
print(answer["result"])
第四步:封装为 API(可选)
使用 FastAPI 暴露 /query 接口,供前端或其他服务调用。