明白了,你想做一篇关于 零成本搭建 RAG(Retrieval-Augmented Generation)智能客服 的实战教程,使用 Ollama + Milvus + DeepSeek。我可以帮你整理一份完整的方案和操作步骤,包括环境搭建、数据导入、向量检索以及与 Ollama 的集成。下面是详细实战指南:
零成本搭建 RAG 智能客服:Ollama + Milvus + DeepSeek 全程实战
目录
- RAG 智能客服简介
- 工具选型与优势
- 环境准备
- 数据收集与处理
- Milvus 向量数据库搭建
- DeepSeek 文档向量化
- Ollama 模型集成与问答
- 测试与优化
- 总结
1️⃣ RAG 智能客服简介
RAG(Retrieval-Augmented Generation)是一种结合 检索 和 生成 的智能问答方法。
- 检索(Retrieval):根据用户问题从知识库中找到相关文档片段
- 生成(Generation):利用 LLM(大语言模型)生成自然语言回答
优势:
- 回答更精准,可引用知识库内容
- 可轻松处理长文档或企业内部文档
- 可用开源工具实现零成本部署
2️⃣ 工具选型与优势
| 工具 | 功能 | 优势 |
|---|---|---|
| Ollama | 本地运行 LLM 模型 | 零成本,本地隐私,支持多种大型语言模型 |
| Milvus | 向量数据库 | 高性能向量检索,支持海量文档 |
| DeepSeek | 文档向量化 | 支持 PDF/Word/网页等多种格式,自动切分文档 |
💡 本方案核心思路:
文档 → DeepSeek 向量化 → 存入 Milvus → Ollama + Milvus 实现 RAG 问答
3️⃣ 环境准备
- 操作系统:Mac / Linux / Windows
- 安装依赖:
# Python 3.10+
pip install pymilvus deepseek
- Milvus 部署
# Docker 部署 Milvus
docker run -d --name milvus \
-p 19530:19530 -p 9091:9091 \
milvusdb/milvus:latest
- Ollama 安装
- 官网下载安装包:https://ollama.com
- 安装完成后运行:
ollama list # 查看可用模型
4️⃣ 数据收集与处理
- 收集 FAQ、产品手册、文档、网页等
- 文档格式统一:PDF、TXT、Word
- 文档清洗:
- 去掉无用符号
- 按章节或段落切分,方便向量化
5️⃣ Milvus 向量数据库搭建
- 创建集合(Collection):
from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection
connections.connect("default", host="127.0.0.1", port="19530")
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=768),
FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=65535)
]
schema = CollectionSchema(fields, "RAG知识库")
collection = Collection("faq_collection", schema)
- 索引向量
from pymilvus import Index
index_params = {"index_type": "IVF_FLAT", "metric_type": "L2", "params": {"nlist": 128}}
collection.create_index("embedding", index_params)
collection.load()
6️⃣ DeepSeek 文档向量化
from deepseek import DeepSeek
ds = DeepSeek(model="text-embedding-3-small") # 免费向量模型
docs = ["这是文档1内容", "这是文档2内容"]
embeddings = ds.embed(docs) # 返回向量列表
# 插入 Milvus
collection.insert([
[i for i in range(len(docs))], # id
embeddings, # embedding
docs # 原文
])
7️⃣ Ollama 模型集成与问答
- 连接 Ollama 本地模型:
from ollama import Ollama
ollama = Ollama(model="llama2-7b") # 本地模型
- 实现 RAG 问答逻辑
def rag_query(question):
# 1. 将问题向量化
q_emb = ds.embed([question])[0]
# 2. Milvus 检索
results = collection.search([q_emb], "embedding", param={"metric_type":"L2","limit":3})
contexts = [res.entity.get("content") for res in results[0]]
# 3. 拼接上下文给 Ollama
prompt = f"根据以下内容回答用户问题:\n{contexts}\n问题:{question}"
answer = ollama.chat(prompt)
return answer
# 测试
print(rag_query("产品如何退款?"))
8️⃣ 测试与优化
- 增加文档数量 → Milvus检索效果更佳
- 调整向量模型维度、检索参数
- Ollama 模型可替换为更大或更精细的 LLM
9️⃣ 总结
✅ 完整零成本 RAG 智能客服搭建流程:
- 文档收集与清洗
- DeepSeek 向量化
- Milvus 存储与检索
- Ollama 生成答案
优势:
- 本地运行,数据安全
- 免费或低成本方案
- 高扩展性,可支持企业级知识库
发表回复