LangChain 0.1.20 + Ollama 8个高频坑|新手直接抄答案(无冗余)

64 阅读5分钟

做AI项目落地最磨人的,从来不是写核心逻辑,而是「装完跑不通、跑通报错、查遍教程也解决不了」的细碎问题。

最近3个月,我处理了上百个LangChain+Ollama相关的调试需求,发现80%的开发者都在踩重复的坑——尤其是LangChain 0.1.20这个稳定版本,看似好用,实则藏着不少细节陷阱。

今天把最高频的8个坑,搭配可直接复制的解决方案整理出来,新手看完不用查资料,复制代码就能解决,节省大量调试时间。

坑1:Ollama命令行能用,Python代码调用超时

现象:CMD中输入「ollama run deepseek-r1」能正常对话,但Python调用时提示「Connection refused」或超时。

核心原因:LangChain 0.1.20搭配的langchain-community版本,不兼容「localhost」,必须指定IP地址。

解决方案(直接复制)

from langchain_community.llms import Ollama

# 关键修改:将localhost改为127.0.0.1
llm = Ollama(
    model="deepseek-r1:7b",  # 轻量版可用deepseek-r1:1.8b,适配低配置
    base_url="http://127.0.0.1:11434",  # 必写IP,不能写localhost
    temperature=0.1
)

# 测试调用,验证是否成功
print(llm.invoke("简洁解释RAG核心原理"))

坑2:ImportError 无法导入Ollama模块

现象:运行代码提示「from langchain_community.llms import Ollama」报错,找不到模块。

核心原因:langchain与langchain-community版本不兼容,不是版本太高,就是太低。

解决方案:固定稳定版本组合(亲测适配99%场景),执行以下命令:

# 先升级pip,避免底层依赖冲突
pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

# 安装兼容版本,国内镜像加速,避免下载超时
pip install langchain==0.1.20 langchain-community==0.0.38 -i https://pypi.tuna.tsinghua.edu.cn/simple

坑3:RAG向量库检索为空,无返回结果

现象:文档切分、入库流程无报错,但调用similarity_search时,返回空列表,检索不到任何内容。

核心原因:embedding模型不一致,或向量库索引路径错误,导致无法匹配检索内容。

解决方案(直接复制)

from langchain.embeddings.huggingface import HuggingFaceEmbeddings
from langchain_community.vectorstores import Chroma

# 固定embedding模型,与入库时保持一致(避免检索失败)
embeddings = HuggingFaceEmbeddings(
    model_name="all-MiniLM-L6-v2",
    model_kwargs={"device": "cpu"}  # 无GPU可写cpu,有GPU可改为cuda
)

# 重建向量库(删除旧索引,避免复用导致的异常)
db = Chroma.from_documents(
    texts=你的文档列表,  # 替换成自己的切分后文本
    embedding=embeddings,
    persist_directory="./vector_db"  # 固定路径,方便后续加载
)
db.persist()

# 测试检索,验证是否有结果
docs = db.similarity_search("你的检索关键词", k=3)
print(f"召回文档数:{len(docs)}")  # 大于0即为成功

坑4:RAG回答胡说八道,脱离上下文

现象:向量库检索正常,但大模型回答时编造内容、脱离文档上下文,不符合预期。

核心原因:Prompt模板未做限制,大模型默认会“脑补”内容。

解决方案(固定Prompt模板,直接复制)

from langchain.prompts import PromptTemplate

# 限制大模型仅基于上下文回答,禁止编造
prompt_template = """
严格按照以下上下文内容回答用户问题,禁止添加任何上下文之外的信息,禁止编造内容。
若上下文未提及相关答案,直接回复:“根据提供的资料无法回答该问题”。

上下文:{context}
用户问题:{question}
回答:
"""

prompt = PromptTemplate(
    template=prompt_template,
    input_variables=["context", "question"]
)

坑5:Token超限、上下文溢出报错

现象:运行RAG链时,提示「Token limit exceeded」,无法生成回答。

核心原因:文档切分粒度太大、召回数量太多,导致上下文Token超出模型限制。

解决方案:调整两个关键参数(无需改代码逻辑):

  • 文档切分:chunk_size设为500800(避免过粗),chunk_overlap设为50100(保证语义连贯)
  • 检索数量:retriever的search_kwargs={"k": 2~3}(减少召回文档,降低Token占用)

坑6:Ollama模型下载慢、失败、频繁断连

现象:执行「ollama pull deepseek-r1:7b」时,下载速度极慢,或中途断连、提示下载失败。

解决方案:两个方法任选,优先选方法1(最简单):

  1. 换国内镜像源,加速下载(具体镜像可自行搜索,亲测有效);
  2. 改用轻量版模型,如「deepseek-r1:1.8b」,体积小、下载快,适配低配置设备。

坑7:GPU显存不足,运行即闪退

现象:调用Ollama模型时,电脑闪退、提示「显存不足」,或模型无法启动。

解决方案:3个方法,按需选择:

  • 改用CPU运行:Ollama默认优先调用GPU,无独立显卡可切换为CPU(无需改代码,重启Ollama即可);
  • 换小参数量模型:将7b模型改为1.8b模型,显存占用减少60%+;
  • 关闭后台占用:关闭其他占用显存的软件(如PS、浏览器、其他模型),释放资源。

坑8:环境冲突,装完LangChain后旧项目崩了

现象:安装LangChain 0.1.20后,之前的Python项目提示依赖冲突,无法正常运行。

核心原因:全局环境安装多个版本依赖,导致冲突。

解决方案:使用虚拟环境,隔离不同项目依赖(步骤简单,直接复制命令):

# 1. 创建虚拟环境(Python3.8+可用)
python -m venv ai_env

# 2. 激活虚拟环境(Windows)
ai_env\Scripts\activate

# 2. 激活虚拟环境(Mac/Linux)
source ai_env/bin/activate

# 3. 在虚拟环境中安装依赖(此时不会影响全局环境)
pip install langchain==0.1.20 langchain-community==0.0.38 -i https://pypi.tuna.tsinghua.edu.cn/simple

最后说两句

以上8个坑,都是我在真实调试中反复遇到的,每一个解决方案都经过实测,复制就能用,不用自己踩坑试错。

LangChain+Ollama落地的核心,从来不是“用最新版本”,而是“用稳定版本+避开细节陷阱”,新手跟着这套方案走,能节省80%的调试时间。

如果你在LangChain、Ollama、RAG落地过程中,遇到上述未覆盖的报错,或者代码跑不通、环境搞不定,都可以找我交流问题,我会帮你快速定位问题根源,少走弯路。