大多数检索增强生成(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"{
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。