Langchain+Ollama实现Qwen模型+客服问答私有数据FAQ-实现RAG

目标:

部署一个结合大模型和RAG的,客服问题API,如果提问的问题在常见FAQ里,使用FAQ里数据,否则使用大模型回答问题。

本文使用Ollama 直接运行本地 Qwen 模型,需要先安装好ollama。


现在我们将使用 LangChain + Ollama 搭建 RAG(检索增强生成)系统,让它可以:

  1. 从 Excel 读取 FAQ
  2. 将 FAQ 问题转换为向量(使用 Ollama 的 Embedding 模型)
  3. 存入 FAISS 向量数据库
  4. 提供问答接口
    • 优先检索 FAQ(如果 FAQ 匹配度高,直接返回)
    • 匹配度低则让 Ollama 生成答案
  5. 启动 API 服务器,供前端调用

1. 安装必要的库

如果你还没有安装这些库,请运行:

pip install langchain langchain-community faiss-cpu ollama pandas openpyxl fastapi uvicorn

2. 代码:构建 RAG 方案

下面的代码会:

  • 从 Excel 读取 FAQ
  • 计算向量并存入 FAISS
  • 使用 Ollama 进行回答
  • 启动 API 服务器

我们将代码分成 两个部分

  1. build_vector_db.py 👉 负责 一次性构建向量数据库(只在 FAQ 变化时运行)
  2. faq_rag_api.py 👉 负责 实时查询 FAQ & 生成答案(只做检索 & 生成)
🔹 构建向量数据库 (build_vector_db.py)
from langchain_community.document_loaders import DataFrameLoader
from langchain_ollama import OllamaEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_core.documents import Document  # 确保 FAQ “答案”存入 metadata
import pandas as pd

file_path = "客服问答素材.xlsx"
df = pd.read_excel(file_path)

# 重新组织数据,确保 "答案" 存入 metadata
df = df.rename(columns={"问题": "question", "答案": "answer"}).dropna()
documents = [Document(page_content=row["question"], metadata={"answer": row["answer"]}) for _, row in df.iterrows()]

# 计算 FAQ 问题的向量(Embedding)
MODEL_NAME = "qwen2.5:0.5b"
embedding_model = OllamaEmbeddings(model=MODEL_NAME)
vector_store = FAISS.from_documents(documents, embedding_model)

# 存储向量数据库
vector_store.save_local("faq_index")
print("✅ FAQ 向量数据库构建完成!")

Excel数据如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值