离线运行完整的检索增强生成智能体:LangGraph + Ollama + 嵌入式 Qdrant(零 API 密钥)

发布日期:2026-06-29 10:01:30   浏览量 :6
发布日期:2026-06-29 10:01:30  
6

大多数检索增强生成(RAG)教程都以“设置你的 OPENAI_API_KEY”开篇。但本教程不需要它。在第一部分中,我声称大型语言模型(LLM)和嵌入模型位于一个可互换的边界之后——“通过配置而非代码切换提供商”。第三部分是我兑现这一承诺:在笔记本电脑上运行整个 RAG 代理——包括摄入、检索、反应(ReAct)循环、来源引用——只需奥拉马(Ollama)和嵌入式夸德兰特(Qdrant),零 API 密钥且无需多克尔(Docker)

以下内容均为实际运行的真实输出。包括那个出错的地方。

“离线”实际需要什么

三个组件,全部本地化:

  • 奥拉马(Ollama) 运行两个模型——一个用于聊天,一个用于嵌入:
  ollama pull qwen3.5:9b   # 聊天 / 推理
  ollama pull bge-m3       # 嵌入(1024维,多语言)
  • 嵌入式夸德兰特(Qdrant) ——无服务器,无容器。向量存储写入本地目录。
  • 一行配置切换,使聊天指向奥拉马(Ollama)而非网关:
  CHAT_PROVIDER=ollama

就是这样。没有 OPENAI_API_KEY,没有 docker compose up。之所以这是切换而非重写,是因为第一部分中的提供商互换设计——让我们看看使其生效的三个工厂方法。

嵌入工厂——通过配置互换

# app/llm/embeddings.py
@lru_cache
def get_embeddings() -> Embeddings:
    s = get_settings()
    provider = s.embedding_provider.lower()

    if provider == "ollama":
        from langchain_ollama import OllamaEmbeddings
        return OllamaEmbeddings(model=s.embedding_model, base_url=s.ollama_url)

    if provider == "openai":
        from langchain_openai import OpenAIEmbeddings
        return OpenAIEmbeddings(base_url=f"{

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据