跳转到主要内容

使用关键词、向量相似度和其他属性查询文本。

项目描述

QText

Python Check discord invitation link trackgit-views

QText是一个用于构建RAG管道或基于Postgres的语义搜索引擎的微服务框架。它提供了一个简单的API来添加、查询和突出显示现有数据库中的文本。

主要功能包括

  • 使用Postgres GIN索引的全文搜索。
  • 使用pgvecto.rs进行向量和稀疏搜索。
  • 使用交叉编码模型、Cohere重排序API或其他方法进行重排序。
  • 语义高亮

除此之外,qtext还提供了一个仪表板来可视化向量搜索、稀疏向量搜索、全文搜索和重排序结果。

asciicast

设计目标

  • 简单:易于部署和使用。
  • 可定制:可以集成到现有的数据库中。
  • 可扩展:可以通过新功能进行扩展。

如何使用

使用docker compose启动所有服务

docker compose -f docker/compose.yaml up -d server

某些依赖服务可以取消选择

  • emb:用于生成查询和文档的嵌入
  • sparse:用于生成查询和文档的稀疏嵌入(这需要一个HuggingFace令牌,该令牌已签署prithivida/Splade_PP_en_v1的协议)
  • highlight:用于提供语义高亮功能
  • encoder:使用交叉编码模型进行重排序,您可以选择其他方法或其他在线服务
arch

对于客户端示例,请查看

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 中有表格,您将负责文本索引和向量索引部分。

  1. 定义一个包含必要列作为类属性的 dataclass
    • 使用元数据注释 primary_keytext_indexvector_indexsparse_index(并非所有都是必需的,只需必要的即可)。
    • 在没有默认值或默认工厂的属性被视为必需项,当您添加新文档时。
  2. 实现 to_recordfrom_record 方法,以便在重新排序阶段使用。
  3. 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 查看哈希值)

上传时间 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面