当前位置:   article > 正文

向量数据库实战介绍_fassi向量数据库

fassi向量数据库

本文将介绍三种常用的向量数据库: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:
        f.w
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/893451
推荐阅读
相关标签
  

闽ICP备14008679号