使用关键词、向量相似度和其他属性查询文本。
项目描述
QText
QText是一个用于构建RAG管道或基于Postgres的语义搜索引擎的微服务框架。它提供了一个简单的API来添加、查询和突出显示现有数据库中的文本。
主要功能包括
- 使用Postgres GIN索引的全文搜索。
- 使用pgvecto.rs进行向量和稀疏搜索。
- 使用交叉编码模型、Cohere重排序API或其他方法进行重排序。
- 语义高亮
除此之外,qtext还提供了一个仪表板来可视化向量搜索、稀疏向量搜索、全文搜索和重排序结果。
设计目标
- 简单:易于部署和使用。
- 可定制:可以集成到现有的数据库中。
- 可扩展:可以通过新功能进行扩展。
如何使用
使用docker compose启动所有服务
docker compose -f docker/compose.yaml up -d server
某些依赖服务可以取消选择
emb
:用于生成查询和文档的嵌入sparse
:用于生成查询和文档的稀疏嵌入(这需要一个HuggingFace令牌,该令牌已签署prithivida/Splade_PP_en_v1的协议)highlight
:用于提供语义高亮功能encoder
:使用交叉编码模型进行重排序,您可以选择其他方法或其他在线服务
对于客户端示例,请查看
- test.py:简单演示。
- test_cohere_wiki.py:带有Cohere嵌入的Wikipedia数据集。
API
我们提供了一个简单的同步/异步客户端。您还可以参考OpenAPI并构建自己的客户端。
/api/namespace
POST:创建新的命名空间并配置索引/api/doc
POST:添加新文档/api/query
POST:查询文档/api/highlight
POST:语义高亮/metrics
GET: 打开指标
查看OpenAPI 文档以获取更多信息(这需要 qtext 服务)。
终端 UI
我们提供了一个简单的终端 UI,由Textual提供,以便您与服务进行交互。
pip install textual
# need to run the qtext service first
python tui/main.py $QTEXT_PORT
配置
查看config.py以获取更多详细信息。如果此文件存在,它将读取$HOME/.config/qtext/config.json
。
集成到 RAG 流程
该项目包含 RAG 所需的大部分组件,除了最后的 LLM 生成步骤。您可以将检索 + 重新排序的文档发送到任何 LLM 提供商以获取最终结果。
自定义表模式
[!NOTE] 如果您已经在 Postgres 中有表格,您将负责文本索引和向量索引部分。
- 定义一个包含必要列作为类属性的
dataclass
。- 使用元数据注释
primary_key
、text_index
、vector_index
、sparse_index
(并非所有都是必需的,只需必要的即可)。 - 在没有默认值或默认工厂的属性被视为必需项,当您添加新文档时。
- 使用元数据注释
- 实现
to_record
和from_record
方法,以便在重新排序阶段使用。 - 将
config.vector_store.schema
更改为您已定义的类。
查看schema.py以获取更多详细信息。
项目详情
下载文件
下载适用于您平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
qtext-0.1.0.tar.gz (119.0 kB 查看哈希值)
构建分布
qtext-0.1.0-py3-none-any.whl (24.8 kB 查看哈希值)
关闭
qtext-0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b2e87979327ad91a3035ee96c62aaeb056032d049f4fbf97af08117d795e1f04 |
|
MD5 | 83f52aa6d0da084e12a95f3c35671780 |
|
BLAKE2b-256 | 8879d1c34a4967aae53b93ea408ecd3827b9b1673117c6718732d6cbba11580d |
关闭
qtext-0.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 15c4af36f510c62b1f6d7bea24ed2b5d7cb7b32337e939905e94bdb166a26b32 |
|
MD5 | 09dcd7aa0f19e54b2cb497a6f8d8d138 |
|
BLAKE2b-256 | ae2e12ba6022488892d98f3566b047612c60f6ddf043cbd7f1306b9d6d23d820 |