基于Agentscope的RAG实现
·
RAG(Retrieval-Augmented Generation,检索增强生成)可以让大模型根据我们的行业专有数据生成内容,从而减少大模型的“幻觉”,关于RAG的原理网上介绍了不少了,这里介绍一种基于Agentscope的RAG简单实现。
一、embeding模型部署
1.1.ollama模型部署
RAG需要使用embeding模型将知识库中文字转化为特征向量的模型,这里使用ollama进行的本地部署,也可以用其他模型实现。相关的部署代码如下:
# 1. 安装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
# 2. 启动服务
sudo systemctl enable ollama
sudo systemctl start ollama
下载embeding模型
# 3. 拉取 embedding 模型
ollama pull mxbai-embed-large
模型下载结果:
下载完毕后可以通过ollama list查看模型:

测试模型:
# 4. 测试
curl http://localhost:11434/api/embed -d '{
"model": "mxbai-embed-large",
"input": "奶牛行为识别系统"
}'
可以看到模型可以将中文转化为向量

1.2.agentscope调用
使用agentscope关于Ollama Embedding模型的调用模块:
from agentscope.embedding import OllamaEmbedding
self._embedding_model = OllamaEmbedding(
model_name="mxbai-embed-large",
base_url=ollama_base_url,
dimensions=1024,
)
二、RAG的实现
2.1.小型知识库构建
这里在我们自己定义的RAG服务中,搭建了一个小型的奶牛知识数据库,其文件结构如下:
knowledge_base/
├── diseases/ # 疾病类知识
│ ├── fever_infection.md # 发热与感染
│ ├── limping.md # 跛行诊断
│ ├── mastitis.md # 乳房炎
│ └── respiratory_problem.md # 呼吸道问题
│
├── sop/ # 标准操作流程(Standard Operating Procedures)
│ ├── isolation_observation.md # 隔离观察流程
│ ├── manual_review.md # 人工复核流程
│ └── recheck_priority.md # 复检优先级
│
└── symptoms/ # 症状类知识
├── abnormal_behavior.md # 异常行为
├── loss_of_appetite.md # 食欲减退
└── respiratory_symptom.md # 呼吸道症状
2.2.知识向量库构建
embeding 模型部署好后,使用Agentscope提供的专门的RAG实现库,其封装了RAG实现的复杂逻辑,方便快速实现功能。
这里textreader的作用是进行文档切分,其会对文档按照512长度单位进行切分,分为一个个小的chunk,随后embedding模型会对每一个chunk进行特征提取
from agentscope.rag import TextReader
# 创建文本读取器
reader = TextReader(chunk_size=512, split_by="paragraph")
这里设定了使用内存存储知识向量库,SimpleKnowledge用于构建知识库。
from agentscope.rag import InMemoryStore
from agentscope.rag import QdrantStore, SimpleKnowledge
self._vector_store = InMemoryStore(
dimensions=1024,
)
self._store = SimpleKnowledge(
embedding_model=self._embedding_model,
embedding_store=self._vector_store,
)
2.3.知识向量库使用
通过retrieve方法进行检索增强,其会输出与用户query最相关的文档内容,将这部分内容与用户输入一起输入大模型中,实现了检索增强生成
results = self._store.retrieve(
query=query.question,
limit=self.top_k,
)
更多推荐



所有评论(0)