向量数据库实战介绍

本文将介绍三种常用的向量数据库:faiss, Milvus和Qdrant,并给出一个具体的使用例子。
向量数据库(Vector Database)是一种专门用于存储、管理、查询、检索向量的数据库,主要应用于人工智能、机器学习、数据挖掘等领域。
在向量数据库中,数据以向量的形式进行存储和处理,需要将原始的非向量型数据转化为向量表示(比如文本使用Embedding技术获得其表征向量)。
这种数据库能够高效地进行相似性搜索,快速找到最相似的向量,适用于人脸识别、图像搜索、推荐系统等需要相似性匹配的应用。

去年大模型的大火也带动了向量数据库的迅速发展,使得向量数据库成为热门方向之一,成为AI领域不可或缺的一项重要工具。

本文将介绍常见的三种向量数据库,并结合具体的样例文本给出它们在文本相似性搜索方面的应用。这三个向量数据库分别为:

  • faiss
  • Milvus
  • Qdrant

获取文本Embedding向量

我们使用的样例文本来源于百度百科的“中国载人登月工程”词条,将其本文切分为句子,过滤其中的纯数字的句子,保存为dengyue.txt文件。

对于上述文本,使用OpenAI的embedding模型text-embedding-ada-002来获取句子的表征向量(向量维度为1536,L2范数为1,即单位向量),并保存为numpy模块的npz文件,用于离线存储,避免每次使用时都需要加载。
示例的代码如下:

# -*- coding: utf-8 -*-
import os
import re
import json
from typing import List

from dotenv import load_dotenv
import requests
import numpy as np
from sentencex import segment

load_dotenv()


def get_embedding(texts: List[str]):
    url = "https://api.openai.com/v1/embeddings"
    payload = json.dumps({
        "model": "text-embedding-ada-002",
        "input": texts,
        "encoding_format": "float"
    })
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {os.getenv("OPENAI_API_KEY")}'
    }
    response = requests.request("POST", url, headers=headers, data=payload)
    embedding = [_["embedding"] for _ in response.json()['data']]
    response.close()
    return embedding


def read_file():
    with open("dengyue.txt", "r", encoding="utf-8") as f:
        content = [_.strip() for _ in f.readlines() if _.strip()]
    file_sentences = []
    for line in content:
        sents = list(segment(language="zh", text=line))
        for sent in sents:  # filter
            if sent and not re.match(r'\[\d+\]', sent):
                file_sentences.append(sent)
    return file_sentences


if __name__ == '__main__':
    sentences = read_file()
    sentences_embeddings = np.array(get_embedding(sentences))
    np.savez('text_embedding.npz', sentences_embeddings)
    with open('text.json', 'w') as f:
       
  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值