创建/查询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函数 将完整文档添加到向量索引和文档库中的过程,同时记录各段落和文档的信息,包括偏移、起止、页码等。
- search_doc函数 优先选择完整文档相似度最大的,并且过滤掉低于阈值的结果。
- 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.Faiss import Faiss
Faiss.save_dir = "向量数据库存放目录"
db = Faiss("向量数据库名字")
results = db.search_doc("与这段文字进行相似匹配")
for result in results:
source = result['source'] # 预处理好的文本的唯一ID
score = result['score'] # 相似度
pages = result['pages'] # 匹配的段落下标
print(f"{source}: {score}")
doc = db.docs[source]
paras = doc['paras']
for page in pages:
para = paras[page]
print(para['text']+para['sep'])
Contact us
Project details
Release history Release notifications | RSS feed
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.7.tar.gz
(5.4 kB
view details)
File details
Details for the file faisslite-0.0.7.tar.gz
.
File metadata
- Download URL: faisslite-0.0.7.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82b87c6f7c63e18265a935df6331ee5aa9b7e34a82fa98a5c200109aa07d3335 |
|
MD5 | a3b0e2f4b727b053b4dbcb83f1173e92 |
|
BLAKE2b-256 | 7c26579ff7d52be330c78f524ad455ab4a26de84f674b36f5ad61a80c151fb69 |