基于 Chroma 与 Ollama 构建本地 RAG 应用
本文介绍如何利用 Ollama 在本地运行大语言模型(LLM),并结合 ChromaDB、LangChain 建立一个小型的基于网页内容的本地问答 RAG(Retrieval Augmented Generation)应用。
概念介绍
LLM (Large Language Model)
通过海量文本数据集(书籍、网站等)训练出来的具备通用语言理解和生成能力的模型。虽然它可以推理许多内容,但其知识仅限于特定时间点之前用于训练的数据。
LangChain
一个用于开发由大型语言模型驱动的应用程序的框架。提供了丰富的接口、组件和能力,简化了构建 LLM 应用程序的过程。
Ollama
一个免费的开源框架,可以让大模型很容易地运行在本地电脑上,支持多种模型的高效推理。
RAG (Retrieval Augmented Generation)
一种利用额外数据增强 LLM 知识的技术。它通过从外部数据库获取当前或相关上下文信息,并在请求 LLM 生成响应时呈现给它,从而解决了生成不正确或误导性信息的问题。
工作流程如下:
- 用户提问。
- 系统检索相关文档片段。
- 将检索结果与问题组合成 Prompt。
- LLM 基于上下文生成回答。

环境搭建
1. 安装与下载模型
依据 Ollama 使用指南完成大模型的本地下载和运行。
# 下载 LLM 模型
ollama pull llama3
# 下载 Embedding 模型
ollama pull nomic-embed-text
2. 安装 Python 依赖
安装 langchain、langchain-community、bs4 等库。
pip install langchain langchain-community bs4 gradio
3. 初始化 LangChain Ollama 对象
from langchain_community.llms import Ollama
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
# 初始化 LLM,开启流式输出
llm = Ollama(
model="llama3",
temperature=0.1,
top_p=,
callback_manager=CallbackManager([StreamingStdOutCallbackHandler()])
)


