一个 Python 库整合向量搜索和 LLM 的所有工具
当你需要构建一个带有向量搜索或 RAG 管道的服务时,标准技术栈会变成一个需要组装的工具箱。你需要接入一个像 Qdrant 这样的向量数据库,连接 LlamaIndex 或 LangChain,寻找本地 SQLite 配合元数据的解决方案,还要思考如何将它们串联起来。最终,你的项目会积累十几个外部服务和依赖项,这些都需要托管在某个地方并不断更新。
txtai 项目正是为了解决这一问题而诞生的。这个库自 2020 年起持续开发,将向量数据库、支持 SQL 的混合搜索、图分析和语言模型编排整合在了一个地方。

为什么还需要一个 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 将向量搜索与语言模型相结合。数据库返回相关的文本片段,模型形成最终答案,从而减少幻觉的发生。

作为生成引擎,你可以使用通过 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 系统来说,这是一个极其方便的框架。你可以获得搜索、模型和管道的完整组合,而无需设置复杂的基础设施。
相关项目