做 AI 应用落地这半年,我接了大量 LangChain + RAG 的调试单。大部分新手、甚至有几年开发经验的同学,在真正把 RAG 跑通、跑稳时,都会卡在一些非常典型的小问题上。

我是一名有 8 年经验的后端 / 全栈程序员,目前主要做:Python / Java 代码调试、AI 应用调试、LangChain、RAG、Ollama 本地大模型部署、深度学习环境排错。今天把最常见、最容易卡一天的 5 个坑一次性总结出来,附带解决方案,你遇到直接照着改就行。

坑 1:向量库加载成功,但检索永远返回空 / 召回不准

现象文档切分、入库都正常,一查询就返回空列表,或者召回的内容完全不相关。

常见原因

文本切分太大或太小,语义被截断

向量模型和加载时用的不是同一个

FAISS / Chroma 保存路径不对,加载的是旧索引

查询语句太泛,没有明确意图

# 确保加载和保存用同一个 embedding
from langchain.embeddings.huggingface import HuggingFaceEmbeddings

embeddings = HuggingFaceEmbeddings(
    model_name="all-MiniLM-L6-v2",
    model_kwargs={"device": "cpu"}
)

# 重新构建向量库,不要用旧的 index
db = Chroma.from_documents(
    texts,
    embeddings,
    persist_directory="./vector_db"
)
db.persist()

一句话经验:RAG 召回为空,90% 是向量模型不匹配 / 路径错误

坑 2:Ollama 本地部署成功,但代码里调用超时

现象cmd 里 ollama run deepseek-r1 正常,但 Python 代码一调用就超时、连不上。

原因

Ollama 默认只监听 127.0.0.1

代码里 base_url 写错

模型没拉全,或显存爆了

# 正确写法
from langchain_community.llms import Ollama

llm = Ollama(
    model="deepseek-r1",
    base_url="http://127.0.0.1:11434",
    temperature=0.1
)

# 测试连通性
print(llm.invoke("hello"))

排查顺序:cmd 能跑 → 看端口 → 看地址 → 看模型是否存在。

坑 3:RAG 回答乱、重复、胡说八道

现象

召回是对的,但大模型回答乱七八糟。

核心原因:Prompt 太烂,没有约束输出格式。

直接可用的稳定 Promt

prompt_template = """
你是一个专业的问答助手,请只根据下面的上下文回答问题,不要编造内容。
如果上下文里没有答案,就说:“根据提供的资料无法回答”。

上下文:{context}
问题:{question}

回答:
"""

坑 4:Token 超限、报错 context limit

现象一上传长文档就爆 Token。

最简单有效方案

增大 chunk_size 到 500–800

chunk_overlap 设为 50–100

召回数量 top_k 设为 2–3,不要太多

坑 5:环境冲突:langchain、langchain-community 版本不兼容

现象导入报错:ImportError: cannot import name 'XXX' from 'langchain'

直接能用的依赖

langchain==0.1.20
langchain-community==0.0.38
langchain-core==0.1.52
faiss-cpu
chromadb
ollama
pypdf
python-dotenv

结尾(自然引流,不违规)

以上都是我在真实项目、真实调试订单里总结出来的可落地经验。如果你在做:

LangChain / RAG 项目调试

Ollama / 本地大模型部署

Python 代码报错、环境配置、深度学习环境排错

可以直接找我,我提供远程调试 + 问题定位 + 代码修复,8 年实战经验,复杂问题一次搞定。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐