>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Python

一个 Python 库整合向量搜索和 LLM 的所有工具

当你需要构建一个带有向量搜索或 RAG 管道的服务时,标准技术栈会变成一个需要组装的工具箱。你需要接入一个像 Qdrant 这样的向量数据库,连接 LlamaIndex 或 LangChain,寻找本地 SQLite 配合元数据的解决方案,还要思考如何将它们串联起来。最终,你的项目会积累十几个外部服务和依赖项,这些都需要托管在某个地方并不断更新。

txtai 项目正是为了解决这一问题而诞生的。这个库自 2020 年起持续开发,将向量数据库、支持 SQL 的混合搜索、图分析和语言模型编排整合在了一个地方。

txtai architecture

为什么还需要一个 AI 框架

txtai 的核心理念是提供一个“一体化”工具,而无需连接云端 API。如果你需要组织内部文档的搜索或构建一个自主代理,并不一定要把所有数据都发送到第三方服务。

该库的核心组件是一个嵌入向量数据库。它将向量索引、关系表和图网络结合在一起。这使得混合查询成为可能,可以将语义相似性与标准字段过滤相结合。

以下是一个仅用三行 Python 代码启动向量索引的示例:

import txtai

embeddings = txtai.Embeddings()
embeddings.index(["Correct", "Not what we hoped"])
embeddings.search("positive", 1)
# [(0, 0.29862046241760254)]

如果 Python 不是你技术栈中的主要语言,txtai 提供了 JavaScript、Java、Rust 和 Go 的现成绑定。这通过内置的 FastAPI Web 服务器或 Model Context Protocol (MCP) 实现。

主要框架能力

传统搜索引擎寻找精确的关键词匹配。向量数据库则通过含义查找相似的短语。txtai 将这两种方法结合起来,并支持使用 SQL 语法编写查询。

你不仅可以搜索语义相似的文本,还可以在单个查询中直接按日期、类别或文本标签应用条件进行筛选。除了文本,你还可以索引图像、音频和视频。

LLM 和 RAG 编排

为了通过上下文 grounding 生成响应(检索增强生成),txtai 将向量搜索与语言模型相结合。数据库返回相关的文本片段,模型形成最终答案,从而减少幻觉的发生。

RAG in txtai

作为生成引擎,你可以使用通过 llama.cpp 的本地模型,也可以通过 LiteLLM 连接 OpenAI、Claude 和 AWS Bedrock 等第三方提供商。

自主代理

txtai 中的代理模块基于 Hugging Face 的 smolagents 框架构建。代理可以独立将复杂任务分解为子任务、查询数据库并使用外部工具。

代理行为配置支持通过标准配置文件 agents.md 和规范 skill.md 进行。这在你需要快速描述逻辑而不编写大量样板代码时非常方便。

微模型管道

大语言模型功能全面,但对硬件资源要求高且运行缓慢。txtai 强调使用专业化的紧凑型模型构建工作流。

框架建议组合使用专业化神经网络,而不是调用假设的 GPT-4 来进行语音识别、翻译和文本摘要:

  • Whisper 用于将音频转换为文本
  • OPUS 用于机器翻译
  • DistilBART 用于生成摘要
  • DeBERTa v3 用于分类和标注
  • ESPnet JETS 用于文本转语音

这种管道方式节省计算资源并降低数据处理的延迟。

内部工作原理

该项目使用 Python 3.10+ 编写,并积极使用 Hugging Face 基础设施(Transformers 和 Sentence Transformers)。底层使用 SQLite、DuckDB 和网络库来存储元数据和图连接。

在部署方面,txtai 非常轻量。你可以通过 pip 安装基础包或运行现成的 Docker 容器:

pip install txtai

如需要,可安装额外的模块,例如用于处理音频或图形的模块,这使得库在基础配置下保持轻量。

# app.yml
embeddings:
    path: sentence-transformers/all-MiniLM-L6-v2

要以微服务模式运行,只需将配置文件传递给 uvicorn:

CONFIG=app.yml uvicorn "txtai.api:app"
curl -X GET "http://localhost:8000/search?query=positive"

实际使用场景

txtai 开发团队维护着 70 个带有示例的交互式笔记本。在实际场景中,几个最常见的用例脱颖而出:

  • 创建知识库,支持文档和论证文件搜索
  • 从文本构建知识图谱,自动提取实体
  • 媒体文件处理:自动播客转录或图像搜索
  • 创建完全在本地硬件上离线运行的个人助手

总结

txtai 不太可能完全取代像 Milvus 这样在处理数十亿向量的高负载项目中的专业分布式数据库。然而,对于本地服务、内部企业工具和快速混合 RAG 系统来说,这是一个极其方便的框架。你可以获得搜索、模型和管道的完整组合,而无需设置复杂的基础设施。

相关项目