RAG 问答实战:文档 → 向量 → 回答

知识库
知识库文档
/tech-stacks/langchain/examples/RAG 问答实战:文档 → 向量 → 回答.md

文档

LangChain RAG(检索增强生成)Hello World

目标

构建一个最小 RAG 系统:加载文档 → 切分 → 向量化存储 → 检索 → 让 LLM 回答问题。

完整代码

from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate

# ─── 1. 准备文档 ───
with open("knowledge.txt", "w") as f:
    f.write("""Python 是一种解释型、面向对象的编程语言,由 Guido van Rossum 于 1991 年发布。
Python 的设计哲学强调代码可读性,使用缩进代替大括号。
Python 广泛应用于 Web 开发(Django/Flask)、数据科学(NumPy/Pandas)、AI(PyTorch/TensorFlow)。
Python 的包管理器是 pip,虚拟环境用 venv 或 conda 管理。""")

# ─── 2. 加载 → 切分 ───
loader = TextLoader("knowledge.txt")
documents = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=200, chunk_overlap=50)
chunks = splitter.split_documents(documents)
print(f"文档被切分为 {len(chunks)} 个 chunk")

# ─── 3. 向量化存储 ───
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")
retriever = vectorstore.as_retriever(search_kwargs={"k": 2})

# ─── 4. 构建 RAG Chain ───
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)

prompt = ChatPromptTemplate.from_template("""
根据以下上下文回答用户问题。如果上下文中没有答案,请说"我不确定"。
不要编造信息。

上下文:
{context}

问题:{input}
回答:
""")

combine_chain = create_stuff_documents_chain(llm, prompt)
rag_chain = create_retrieval_chain(retriever, combine_chain)

# ─── 5. 提问 ───
questions = [
    "Python 是谁创建的?",
    "Python 在 AI 领域有哪些框架?",
    "Python 是编译型还是解释型?",
]

for q in questions:
    result = rag_chain.invoke({"input": q})
    print(f"\n❓ {q}")
    print(f"💬 {result['answer']}")

运行步骤

pip install langchain langchain-openai chromadb tiktoken
export OPENAI_API_KEY="sk-..."
echo "Python 是一种解释型..." >; knowledge.txt
python rag_hello_world.py

预期输出

文档被切分为 2 个 chunk

❓ Python 是谁创建的?
💬 Python 由 Guido van Rossum 于 1991 年创建。

❓ Python 在 AI 领域有哪些框架?
💬 Python 在 AI 领域使用的框架包括 PyTorch 和 TensorFlow。

❓ Python 是编译型还是解释型?
💬 Python 是一种解释型编程语言。

信息

路径
/tech-stacks/langchain/examples/RAG 问答实战:文档 → 向量 → 回答.md
更新时间
2026/5/31