搞定 AI 幻觉的工程方案:RAG 的落地成本与检索调优
我在跑 LangChain Demo 时用的逻辑如下:
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.document_loaders import PDFLoaderloader = PDFLoader("company_docs.pdf")
docs = loader.load()
embeddings = OpenAIEmbeddings()
vector_store = FAISS.from_documents(docs, embeddings)
retriever = vector_store.as_retriever()
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
qa = RetrievalQA.from_chain_type(
llm=OpenAI(),
chain_type="stuff",
retriever=retriever
)
result = qa.run("What's our Q3 revenue?")
print(result)
实际部署时,性能瓶颈不在模型,而在 Chunking 策略和 Embedding 模型的领域匹配度。如果检索质量差,后续推理全是浪费 Token。
针对不同规模的需求,组件选型要精算:本地测试用 FAISS 即可,大规模生产环境建议直接上 Pinecone、Weaviate 或 Milvus。
为了提高检索命中率,必须引入 Hybrid Search(语义+关键词)或者在检索前加一层 Query Rewriting。利用 LLM 把模糊提问改写为精准搜索词是目前提升召回率最有效的工程手段:
# 必须经过改写逻辑才能保证检索质量
original_query = "stuff about money"
rewritten = llm.predict(
f"Rewrite this for a database search: {original_query}"
)
转换后变成: "financial statements Q3 2026"
做金融研报或客服机器人这类对准确率有硬性要求的场景,RAG 是必须投入的工程成本。promptcube3.com