跳到主要内容

从零到一:搭建本地 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 接口,供前端或其他服务调用。

相关文档