向量数据库
向量数据库介绍
我们在用图片搜索图片,或者语音搜索语音的时候,在数据库中存储和对比的并不是图片和语音片段,而是通过深度学习等算法提取出来的'特征',一般是 256/512 个 float 数组,可以用数学中的向量来表示。
向量数据库就是用来存储、检索、分析向量的数据库。之所以称之为数据库,是因为它有下面几个特征:
a) 提供标准的访问接口,降低用户的使用门槛 b) 提供高效的数据组织、检索和分析的能力。一般用户在存储和检索向量的同时,还需要管理结构化的数据,即支持传统数据库对结构化数据的管理能力。
向量数据库的优势
举例介绍:
问:使用 Embedding 与仅仅在数据库上使用全文搜索有什么不同?
答:假设我的数据库里有一段文字'老鼠在寻找食物'。用户输入了'奶酪🧀'的查询。文本搜索根本无法识别这段话,它不包含任何重叠部分。但是通过 Embedding,把两段文字都变成了向量,然后可以对这段文字进行相似性搜索。
因为'老鼠'和'奶酪🧀'在某种程度上是相关的,所以尽管缺乏匹配的词,用户还是能够得到该段落的结果。
向量数据库解决的问题
从技术角度来讲,向量数据库主要解决 2 个问题,一个是高效的检索,另一个是高效的分析。
- 检索通常就是图片检索图片,例如人脸检索,人体检索,和车辆检索,以及淘宝的商品图片检索,人脸支付。
- 城市应用的也比较多,例如人脸撞库,公安会把 2 个类似作案手法的案发现场周边的人像做对比,看哪些人同时在 2 个案发现场出现。
部分向量数据库产品
Milvus、Pinecone、Vespa、Weaviate、Vald、用于 Elasticsearch 和 OpenSearch 的 GSI APU 板、Qdrant
OpenAI ChatGPT API 文档之 Embedding
GPT 介绍的 Embedding
在自然语言处理和机器学习领域,'embeddings'是指将单词、短语或文本转换成连续向量空间的过程。这个向量空间通常被称为嵌入空间(embedding space),而生成的向量则称为嵌入向量(embedding vector)或向量嵌入(vector embedding)。
嵌入向量可以捕获单词、短语或文本的语义信息,使得它们可以在数学上进行比较和计算。这种比较和计算在自然语言处理和机器学习中经常被用于各种任务,例如文本分类、语义搜索、词语相似性计算等。
在中文语境下,'embeddings'通常被翻译为'词向量'或者'向量表示'。这些翻译强调了嵌入向量的特点,即将词汇转换成向量,并表示为嵌入空间中的点。
什么是 Embedding
Embedding 是一个浮点数向量(列表)。两个向量之间的距离用于测量它们之间的相关性。较小距离表示高相关性,较大距离表示低相关性。
如何使用 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": [
...


