Skip to main content

创建/查询Faiss向量数据库

Project description

About

一个用于中文文本向量化和相似度搜索的Python包。它可以将中文段落表征为向量矩阵,并构建向量搜索索引,用于快速准确检索文本中的相似句子。

Install

$ pip3 install -U faisslite

Director

  • faisslite
    • document.py
    • Faiss.py

document.py

对输入文本进行规范化处理,并将输入文本拆分成段落。

  • parse函数 将文本拆分为由文本段落和分隔符构成的字典数组,为后续向量化处理文本提供了基础。
  • stringify函数 将字典数组表示的文章序列化为文本。

Faiss.py

使用spacy和text2vec将文本编码为句向量。定义了Faiss类,封装了一个Faiss索引的构建、添加样本、搜索相似样本、保存等功能。实现语义相似句检索的核心代码,通过词向量技术编码句子语义,以及高效的向量空间索引Faiss实现快速相似度搜索。

  • Faiss类
    • add_doc函数 将完整文档添加到向量索引和文档库中的过程,同时记录各段落和文档的信息,包括偏移、起止、页码等。
    • query函数 优先选择完整文档相似度最大的,并且过滤掉低于阈值的结果。
    • dump函数 将构建好的Faiss索引保存到文件。

Usage

将预处理好的文本,添加到向量数据库中

from faisslate.document import parse
from faisslate.Faiss import Faiss

source = "预处理好的文本的唯一ID"
paras = parse("预处理好的文本字符串")

Faiss.save_dir = "向量数据库存放目录"
db = Faiss("向量数据库名字")
db.add_doc(source, {'paras': paras})
db.dump()

查询,然后显示匹配的文本段落

from faisslate.document import stringify
from faisslate.Faiss import Faiss

Faiss.save_dir = "向量数据库存放目录"
db = Faiss("向量数据库名字")
results = db.query("与这段文字进行相似匹配")
for result in results:
    source = result['source'] # 预处理好的文本的唯一ID
    score  = result['score']  # 相似度
    pages  = result['pages']  # 匹配的段落下标

    print(f"{source}: {score}")
    doc = db.docs[source]
    print(stringify(doc['paras'], pages))

Contact us

may.xiaoya.zhang@gmail.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

faisslite-0.1.0.tar.gz (5.8 kB view details)

Uploaded Source

File details

Details for the file faisslite-0.1.0.tar.gz.

File metadata

  • Download URL: faisslite-0.1.0.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for faisslite-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0f4eebf51d181139dddbc4936b2f1b4134a0acec8accaec7851df42d7f89c01a
MD5 235b2b56721a56c458a6d457c2c9cca8
BLAKE2b-256 ad18b44a001dbe1c1e2ad9de5b076245c617594ae66d5d6276f36cd4f6ab64c3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page