1562  
查询码: 00000572
ChatGPT+向量数据库搭建私有化知识库(一)
来源:https://juejin.cn/post/7227079326594859068
作者: 系统管理员1 于 2023年09月05日 发布在分类 / 配置安装 / AI / LLM ,于 2023年09月05日 编辑
向量 数据 数据库 embedding milvus 检索 搜索 知识 介绍 用户


1、向量数据库

1、向量数据库介绍

我们在用图片搜索图片,或者语音搜索语音的时候,在数据库中存储和对比的并不是图片和语音片段,而是通过深度学习等算法提取出来的“特征”,一般是256/512个float数组,可以用数学中的向量来表示。

向量数据库就是用来存储,检索,分析向量的数据库。只所以称之为数据库,是因为它有下面几个特征:

a) 提供标准的访问接口,降低用户的使用门槛

b)提供高效的数据组织,检索和分析的能力。一般用户在存储和检索向量的同时,还需要管理结构化的数据,即支持传统数据库对结构化数据的管理能力。

2、向量数据库的优势

举例介绍:

:使用Embedding与仅仅在数据库上使用全文搜索有什么不同?

:假设我的数据库里有一段文字 “老鼠在寻找食物”。用户输入了"'奶酪’”的查询。文本搜索根本无法识别这段话,它不包含任何重叠部分。但是通过Embedding,把两段文字都变成了向量,然后可以对这段文字进行相似性搜索。

因为“老鼠”和“奶酪”在某种程度上是相关的,所以尽管缺乏匹配的词,用户还是能够得到该段落的结果。

3. 向量数据库解决的问题

从技术角度来讲,向量数据库主要解决2个问题,一个是高效的检索,另一个是高效的分析。

1)检索通常就是图片检索图片,例如人脸检索,人体检索,和车辆检索,以及淘宝的商品图片检索,人脸支付。

2)城市应用的也比较多,例如人脸撞库,公安会把2个类似作案手法的案发现场周边的人像做对比,看哪些人同时在2个案发现场出现。

4、部分向量数据库产品

Milvus、Pinecone、Vespa、Weaviate、Vald、用于 Elasticsearch 和 OpenSearch 的 GSI APU 板、Qdrant

详细介绍:7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant

3、OpenAI ChatGPT API 文档之 Embedding

1、GPT介绍的Embedding

在自然语言处理和机器学习领域,"embeddings" 是指将单词、短语或文本转换成连续向量空间的过程。这个向量空间通常被称为嵌入空间(embedding space),而生成的向量则称为嵌入向量(embedding vector)或向量嵌入(vector embedding)。

嵌入向量可以捕获单词、短语或文本的语义信息,使得它们可以在数学上进行比较和计算。这种比较和计算在自然语言处理和机器学习中经常被用于各种任务,例如文本分类、语义搜索、词语相似性计算等。

在中文语境下,"embeddings" 通常被翻译为 "词向量" 或者 "向量表示"。这些翻译强调了嵌入向量的特点,即将词汇转换成向量,并表示为嵌入空间中的点。

2、什么是Embedding

Embedding 是一个浮点数向量(列表)。两个向量之间的距离用于测量它们之间的相关性。较小距离表示高相关性,较大距离表示低相关性。

3、如何使用GPT的API

示例请求:

curl https://api.openai.com/v1/embeddings \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{"input": "Your text string goes here", "model":"text-embedding-ada-002"}'

示例响应:

{ "data": [ { "embedding": [ -0.006929283495992422, -0.005336422007530928, ... -4.547132266452536e-05, -0.024047505110502243 ], "index": 0, "object": "embedding" } ], "model": "text-embedding-ada-002", "object": "list", "usage": { "prompt_tokens": 5, "total_tokens": 5 } }

注意事项:GPT会根据字符串,生成一个1536维度的embedding数组(数组长度为1536)

3、Milvus向量数据库

1、介绍

Milvus 是一款全球领先的开源向量数据库,赋能 AI 应用和向量相似度搜索,加速非结构化数据检索。用户在任何部署环境中均可获得始终如一的用户体验。

Milvus 2.0 是一款云原生向量数据库,采用存储与计算分离的架构设计。该重构版本的所有组件均为无状态组件,极大地增强了系统弹性和灵活性。

2、Milvus相关文档

  • Zilliz 中文技术专区:zilliz.gitee.io/welcome/
    • 技术视频合集:space.bilibili.com/1058892339M…
    • GitHub:github.com/milvus-io/m…
    • Docs:milvus.io/docs
    • 官方 FAQ:milvus.io/docs/produc…
    • Slack:milvusio.slack.com/join/shared…
    • Towhee
      • GitHub:github.com/towhee-io/t…
      • Docs:docs.towhee.io/
  • 在线托管版本:Zilliz Cloud

4、GPT+Milvus搭建私有化知识库

1、流程图示

2、详细流程实现

1、建立向量数据库的collection(相当于数据库表)

2、创建collection的索引

4、导入数据调用openAi转换为向量浮点数据,把数据文本和向量浮点数据存入到collection中

5、加载collection到内存中,用于查询

6、用户查询调用openAi转换为向量浮点数据,根据向量浮点数据查询向量数据库得到数据文本

7、把用户的问题和从向量数据库的数据文本,编写一个prompt,交给GPT进行润色,并生成答案。


1人参与


 历史版本

备注 修改日期 修改人
创建版本 2023-09-05 14:55:39[当前版本] 系统管理员1

 附件

附件类型

JPGJPG

wcp知识库系统-京ICP备15024440号-1 -V 5.2.0 -wcp