【第四章:大模型(LLM)】11.LLM + RAG:构建私有领域专家-(3)Rag实战:使用通义千问api实现一个调用通义千问模型的Rag
·
第四章:大模型(LLM)
第十一部分:LLM + RAG 构建私有领域专家
第三节:RAG 实战——使用通义千问 API 实现一个调用通义千问模型的 RAG
1. 背景介绍
在私有领域(例如医疗、金融、法律、制造业等)中,企业往往拥有大量专业文档,但这些知识通常无法直接被通用大模型学习。
RAG(Retrieval-Augmented Generation) 提供了一个解决方案:通过向量数据库存储知识,并在推理阶段进行检索,将相关内容注入到模型 Prompt 中,从而增强模型的专业问答能力。
本节我们将以 通义千问(Qwen)API 为例,演示如何搭建一个 RAG 应用,实现领域专家系统。
2. 实现流程
整个 RAG 系统由三部分组成:
-
数据准备:将领域知识(PDF、Word、txt 文档)转为文本,并切分为合适的段落。
-
向量化存储:利用通义千问 Embedding API 生成向量,存入向量数据库(如 FAISS、Milvus、Weaviate)。
-
问答流程:用户输入问题 → 检索数据库 → 召回相关文档 → 拼接到 Prompt → 调用通义千问模型生成答案。
3. 环境准备
需要安装以下 Python 包:
pip install openai faiss-cpu
配置环境变量(以 OpenAI SDK 兼容的方式调用通义千问 API):
import os
from openai import OpenAI
# 替换为你的通义千问 API Key
os.environ["OPENAI_API_KEY"] = "your_qwen_api_key"
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"), base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
4. 向量化与存储
import faiss
import numpy as np
# 示例文档
docs = [
"通义千问是阿里巴巴研发的大语言模型。",
"RAG 可以通过检索增强生成,提高问答的准确性。",
"在金融领域,RAG 可用于合规文档查询与智能问答。"
]
# 生成向量
embeddings = []
for doc in docs:
resp = client.embeddings.create(model="text-embedding-v1", input=doc)
embeddings.append(resp.data[0].embedding)
# 转换为 numpy 数组
embedding_matrix = np.array(embeddings).astype("float32")
# 建立向量索引
index = faiss.IndexFlatL2(embedding_matrix.shape[1])
index.add(embedding_matrix)
5. RAG 推理流程
def rag_query(query, top_k=2):
# 1. 生成查询向量
resp = client.embeddings.create(model="text-embedding-v1", input=query)
query_vec = np.array(resp.data[0].embedding).astype("float32").reshape(1, -1)
# 2. 检索
D, I = index.search(query_vec, top_k)
retrieved_docs = [docs[i] for i in I[0]]
# 3. 构造 Prompt
context = "\n".join(retrieved_docs)
prompt = f"已知信息:\n{context}\n\n用户问题:{query}\n请基于已知信息回答用户问题:"
# 4. 调用通义千问模型
response = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "system", "content": "你是一个专业领域助手。"},
{"role": "user", "content": prompt}
]
)
return response.choices[0].message.content
# 示例调用
print(rag_query("RAG 在金融领域的应用是什么?"))
6. 效果展示
输入:
RAG 在金融领域的应用是什么?
输出(示例):
RAG 在金融领域可用于自动化合规检查、智能客服问答、风险报告生成等场景。通过向量检索技术,它能快速定位到相关法规与金融文档,并结合大模型生成自然语言答案。
7. 总结
通过通义千问 API,我们实现了一个 简易 RAG 系统:
-
使用 Embedding 向量化 文档知识;
-
借助 FAISS 向量数据库 进行高效检索;
-
在推理时通过 Prompt 注入领域知识,增强通义千问的专业表现。
该方案具有以下优点:
-
灵活性:支持任意私有领域文档;
-
低成本:无需重新微调大模型;
-
实用性:可快速构建企业级问答助手。
更多推荐



所有评论(0)