使用 Ollama 构建本地 RAG AI 代理进行航空评论
Source: Dev.to

我想探索使用检索增强生成(RAG)的完全本地 AI 代理能够做到什么程度。作为一个小小的出于好奇心的夜间项目,我构建了一个能够回答航空公司评论相关问题的代理——完全离线、快速且成本低廉。
技术栈概览
语言: Python
LLM 运行时: Ollama
模型
llama3.2用于问答mxbai-embed-large用于嵌入
向量存储: Chroma
库
langchainlangchain-ollamalangchain-chromapandas
数据集: 来自 Kaggle 的航空公司评论 (CSV)
为什么选择 Ollama?
我在一台 Linux 云服务器上安装了 Ollama,但它同样可以在 大多数现代 PC 和笔记本电脑 上流畅运行。
- 易于本地运行
- 成本低廉(无需 API 费用)
- 足够快,适合实验
非常适合副项目和学习使用。
数据集准备
数据集来自 Kaggle,包含 CSV 格式的航空公司评论。
为了让向量摄取更快更轻,我创建了一个 精简的 CSV 版本,仅保留对语义搜索相关的列(评论文本、航空公司名称、评分等)。这显著提升了:
- 嵌入生成时间
- 向量存储加载速度
高层架构
- 使用 pandas 从 CSV 加载航空公司评论。
- 使用 mxbai-embed-large 生成嵌入。
- 将向量存储在 Chroma 中。
- 为用户问题检索相关评论。
- 将检索到的评论 + 问题传递给 llama3.2。
- 严格基于检索到的内容 生成答案。
这是经典的 RAG,但完全本地化。
提示设计
该提示明确且具有限制性,以避免产生幻觉:
You are an expert in answering questions about airline reviews.
Use the provided reviews to answer the question as accurately as possible.
Here are some relevant reviews: {reviews}
Here is the question to answer: {question}
IMPORTANT: Base your answer ONLY on the reviews provided above. If no reviews were found, say "No reviews were found."
这条单一指令已经大幅提升了答案的可靠性。
最小化 Python 设置(概念性)
import pandas as pd
from langchain_ollama import OllamaEmbeddings, OllamaLLM
from langchain_chroma import Chroma
from langchain.chains import RetrievalQA
# 1. Load CSV
df = pd.read_csv("airline_reviews_reduced.csv")
# 2. Create embeddings
embeddings = OllamaEmbeddings(model="mxbai-embed-large")
# 3. Build vector store
vector_store = Chroma.from_documents(
documents=df["review_text"].tolist(),
embedding=embeddings,
collection_name="airline_reviews"
)
# 4. Set up LLM
llm = OllamaLLM(model="llama3.2")
# 5. RetrievalQA chain
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vector_store.as_retriever(),
chain_type_kwargs={"prompt": YOUR_PROMPT_STRING}
)
# 6. Ask a question
answer = qa.run("How do passengers generally feel about Emirates?")
print(answer)
代码故意保持简洁易读,侧重于清晰而非抽象层次。
示例结果
✅ 示例 1:有效问题
问题: 乘客通常对阿联酋航空有什么感受?
结果: 代理检索了多个相关评论并正确地进行了总结。

❌ 示例 2:无相关数据
问题: 本田 CRA 是一款好的 SUV 车吗?
结果: 由于未检索到相关评论,代理回复:
未找到评论…

GitHub 仓库
完整的源代码可在此获取:
👉 GitHub Repo: local-AI-agent-RAG
您可以克隆该仓库并按照 README 中的说明运行项目。
最终思考
本项目出于好奇心和兴趣而构建——是一种在不复杂化的前提下尝试本地 RAG 系统的方式。同样的方法可以进一步扩展:使用 更大的数据集 和 更高性能的硬件,你可以构建出更快、更准确且可投入生产的系统。
目前,它作为一个可靠的概念验证,并提醒我们,有意义的 AI 项目并不一定需要庞大的基础设施即可启动 🚀