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.0.8.tar.gz (5.6 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for faisslite-0.0.8.tar.gz
Algorithm Hash digest
SHA256 01185d8c1e0a6c5b8002b3f68930ccd61d9062b4e065b5ffd447926bd9907bd6
MD5 0e20fc2ba9849faa676acd34ef23b473
BLAKE2b-256 b1917ae8be5465941f26c0566522765c29a6f06aca50c7b4e6e025e8fa5c75ac

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