30分钟,通过ModelScope平台和开源LLM打造个人知识库 QA Bot(2)

简介: 30分钟,通过ModelScope平台和开源LLM打造个人知识库 QA Bot

向量算法的选型

完成了文本导入后,可以尝试测试一下效果了。

Chroma向量库中原生的embeddings效果不理想,使用的是 all-MiniLM-L6-v2 算法来进行向量嵌入。这个算法来自于 Sentence Transformers 库。Sentence Transformers 的还有其他算法:

Model

Performance Semantic Search (6 Datasets)

Queries (GPU / CPU) per sec.

multi-qa-MiniLM-L6-dot-v1

49.19

18,000 / 750

multi-qa-distilbert-dot-v1

52.51

7,000 / 350

multi-qa-mpnet-base-dot-v1

57.60

4,000 / 170

拿西游记的全文向量化导入后,查询 东胜神洲(孙悟空的老家花果山) 相关的信息,发现基本无法命中结果。

image.png

于是重新修改向量的算法,看了一下,如果要自定义向量算法,只需要按照以下的数据导入到库里就行。

collection.add(
   文章内容:documents=["doc1", "doc2", "doc3", ...],   
   向量内容:embeddings=[[1.1, 2.3, 3.2], [4.5, 6.9, 4.4], [1.1, 2.3, 3.2], ...],
   原始数据:metadatas=[{"chapter": "3", "verse": "16"}, {"chapter": "3", "verse": "5"}, {"chapter": "29", "verse": "11"}, ...],
   ID:ids=["id1", "id2", "id3", ...]
)

我们在魔搭ModelScope社区。

https://modelscope.cn/models/damo/nlp_corom_sentence-embedding_chinese-base/summary上查看有关该模型的详细信息 。 在不同的领域还可以选择不同的的CoROM模型。

image.png

我们对文本分割器和向量库进行了修改后,重新导入了文本,并进行了查询,这次终于成功地获得了有关东胜神洲的相关信息。

image.png

最终效果

把模型+Prompt+向量算法+向量数据库组合起来后,选用的技术和框架如下图所示:

image.png

image.png

总结

用手工编写的方式实现了完整基于个人知识库的QA Bot,采用手工编写的方式。相比于langchain,这种方法具有以下优点:

  • 可以通过SaaS服务对每个部分进行加速,
  • 每个部分都可以轻松地进行自定义修改。通过简单修改modelid可以使用modelscope的社区的模型,更加适合中文场景。
  • 在满足硬件条件的情况下,可以轻松地将其改为分布式架构,以处理高频访问。

然而,我们可以看到回答的效果仍然不是很好, 文本分割和向量化的过程会直接影响结果,但是对比直接使用langchain,灵活性和中文的相关性好了很多(不过langchain也可以改向量算法)。

在专业领域来说,如果有已经构建好知识图谱的数据,使用这种方式可能会取得非常好的效果。

30分钟快速体验

以下代码已经在modelscope社区的notebook的环境中测试通过。从编写代码到回复,大概需要30分钟左右即可完成,非常适合测试和验证。

1、 安装依赖 ,为了方便使用,我已经把上述的代码整合成一个微型框架 vectorGPTBot 中。

pip install protobuf==3.20.0 transformers==4.27.1 icetk cpm_kernels chromadb
pip install "modelscope[nlp]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
pip install vectorGPTBot=="0.1.6" -i https://pypi.Python.org/simple/

2、 在modelscope的环境中,由于pyhton是3.7的版本。请按照以下步骤修改文件

/opt/conda/lib/python3.7/site-packages/chromadb/api/types.py 

将第一行修改为以下两行:

from typing import Optional, Union, Dict, Sequence, TypeVar, List
from typing_extensions import Literal, TypedDict, Protocol

保存文件并退出。

3、 启动

有三个参数可以自由定义 , 后面两个可以去modelscope社区根据自己的需求进行更换。

v= mainClass(
'/mnt/workspace/test2', #向量数据库保存的路径
"damo/nlp_corom_sentence-embedding_chinese-base", #文本向量算法
"ZhipuAI/ChatGLM-6B", #llm模型 
)

核心是两个命令

  • v.put_data  把数据导入向量库
  • v.query_data 查询数据

from vectorGPTBot.vectorGPTBot import mainClass
v= mainClass(
'/mnt/workspace/test2', #向量数据库保存的路径
"damo/nlp_corom_sentence-embedding_chinese-base", #文本向量算法
"ZhipuAI/ChatGLM-6B", #llm模型 
)
v.put_data([
    '你是谁?我是向量知识库问答机器人。',
    '你可以做什么?回答问题。',
    '吃了海鲜后是不能再喝牛奶的,因为牛奶中含得有维生素C,如果海鲜喝牛奶一起服用会对人体造成一定的伤害',
    '吃海鲜是不能同时喝牛奶吃水果,这个至少间隔6小时以上才可以。',
    '吃海鲜是不可以吃柠檬的因为其中的维生素C会和海鲜中的矿物质形成砷。',
])
v.query_data('你是谁?')

image.png

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
人工智能 自然语言处理 知识图谱
Yuxi-Know:开源智能问答系统,基于大模型RAG与知识图谱技术快速构建知识库
Yuxi-Know是一个结合大模型RAG知识库与知识图谱技术的智能问答平台,支持多格式文档处理和复杂知识关系查询,具备多模型适配和智能体拓展能力。
3880 55
Yuxi-Know:开源智能问答系统,基于大模型RAG与知识图谱技术快速构建知识库
|
人工智能 自然语言处理 监控
阿里云ModelScope平台的综合测评
ModelScope是阿里云推出的AI模型全生命周期管理平台,涵盖模型开发、训练、部署及评测全流程。其核心功能包括预训练模型库、一键式训练与部署、模型版本管理等。中文竞技场作为子平台,专注于模型性能对比与多场景任务评测,在写作创作、代码开发支持和知识问答等方面表现出色。然而,平台在模型泛化能力、高并发性能和内容质量控制上仍有改进空间。总体而言,ModelScope为开发者提供了高效便捷的工具,未来有望进一步推动AI技术普惠化。
1632 10
|
机器学习/深度学习 数据采集 人工智能
文档智能 & RAG 让AI大模型更懂业务 —— 阿里云LLM知识库解决方案评测
随着数字化转型的深入,企业对文档管理和知识提取的需求日益增长。阿里云推出的文档智能 & RAG(Retrieval-Augmented Generation)解决方案,通过高效的内容清洗、向量化处理、精准的问答召回和灵活的Prompt设计,帮助企业构建强大的LLM知识库,显著提升企业级文档管理的效率和准确性。
|
人工智能 数据可视化 关系型数据库
23.5K star!零代码构建AI知识库,这个开源神器让问答系统开发像搭积木一样简单!
FastGPT 是一个基于大语言模型的智能知识库平台,提供开箱即用的数据处理、RAG检索和可视化AI工作流编排能力,让你无需编写代码就能轻松构建复杂的问答系统!
1173 1
|
Oracle 关系型数据库 Java
【YashanDB知识库】开源调度框架Quartz写入Boolean值到YashanDB报错
Quartz是广泛应用于企业级应用的开源作业调度框架,使用布尔值记录任务状态。在YashanDB 23.2.0.12版本中,由于布尔值存储格式与Oracle不同(YashanDB为true/false,Oracle为0/1),导致JDBC写入报错“IS_DURABLE size exceeding limit 1”。此问题影响所有使用Quartz的任务调度场景,需修改字段类型或转换布尔值写入方式解决。建议升级至23.2.0.33版本以获得更好的兼容性,或修改布尔字段为boolean类型。
|
存储 人工智能 NoSQL
Airweave:快速集成应用数据打造AI知识库的开源平台,支持多源整合和自动同步数据
Airweave 是一个开源工具,能够将应用程序的数据同步到图数据库和向量数据库中,实现智能代理检索。它支持无代码集成、多租户支持和自动同步等功能。
930 14
|
人工智能 物联网
如何将Together AI上基于Qwen2-7B训练的模型部署到ModelScope平台
如何将Together AI上基于Qwen2-7B训练的模型部署到ModelScope平台
422 10
|
数据采集 人工智能 自然语言处理
文档智能与检索增强生成结合的LLM知识库方案测评:优势与改进空间
《文档智能 & RAG让AI大模型更懂业务》解决方案通过结合文档智能和检索增强生成(RAG)技术,构建企业级文档知识库。方案详细介绍了文档清洗、向量化、问答召回等步骤,但在向量化算法选择、多模态支持和用户界面上有待改进。部署过程中遇到一些技术问题,建议优化性能和增加实时处理能力。总体而言,方案在金融、法律、医疗等领域具有广泛应用前景。
559 11
|
机器学习/深度学习 数据采集 人工智能
文档智能和检索增强生成(RAG)——构建LLM知识库
本次体验活动聚焦于文档智能与检索增强生成(RAG)结合构建的LLM知识库,重点测试了文档内容清洗、向量化、问答召回及Prompt提供上下文信息的能力。结果显示,系统在自动化处理、处理效率和准确性方面表现出色,但在特定行业术语识别、自定义向量化选项、复杂问题处理和Prompt模板丰富度等方面仍有提升空间。
792 0

热门文章

最新文章