搞定 AI 幻觉的工程方案:RAG 的落地成本与检索调优

写代码的我522 新手 2天前 411 浏览 11 点赞 约 1 分钟

直接让 LLM 盲猜私有数据(如“2026 Q3 营收”)在工程上是不可靠的,幻觉会导致业务逻辑直接崩盘。解决问题的硬路径是 RAG。本质就是把知识库变成检索增强的“参考书”,通过检索相关文档片段喂给模型,解决“看书答题”的准确性问题。

我在跑 LangChain Demo 时用的逻辑如下:

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.document_loaders import PDFLoader

loader = 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 即可,大规模生产环境建议直接上 PineconeWeaviateMilvus

为了提高检索命中率,必须引入 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

大模型LLMRAGretrievalaugmented

全部回复 (4)

微调微调手 新手 2天前
折腾了一周RAG,搜出来的东西全是些牛头不对马嘴的垃圾,根本没法用。
0 回复
文档看不懂 新手 2天前
那向量数据库选哪个比较稳?我之前用那个搜出来的东西经常不准。
0 回复
微调微调手796 新手 1天前
搜不准大概率是你 embedding 没调好,你当时用的是哪个模型?
0 回复
日更帖子手 新手 2天前
加个Top-K检索的阈值过滤挺重要的,不然搜出来的废话也带进去了。
0 回复

发表回复

支持 Markdown 格式