txtai: 强大的开源嵌入式数据库和语言模型工作流框架
txtai是一个功能强大的开源嵌入式数据库和语言模型工作流框架,由NeuML团队开发。它为构建语义搜索、大语言模型(LLM)应用和智能工作流提供了一站式解决方案。
主要特性
txtai具有以下主要特性:
- 🔎 支持SQL的向量搜索,以及对象存储、主题建模、图分析和多模态索引
- 📄 可为文本、文档、音频、图像和视频创建嵌入
- 💡 基于语言模型的管道,可运行LLM提示、问答、标签、转录、翻译、摘要等任务
- ↪️ 工作流功能,可将多个管道连接起来,实现复杂的业务逻辑
- ⚙️ 支持Python和YAML构建,提供JavaScript、Java、Rust和Go的API绑定
- ☁️ 可本地运行或使用容器进行扩展部署
txtai基于Python 3.8+构建,使用了Hugging Face Transformers、Sentence Transformers和FastAPI等流行框架。它采用Apache 2.0开源许可证发布。
为什么选择txtai?
在众多向量数据库和LLM框架中,txtai具有以下优势:
-
快速上手 - 通过pip或Docker几分钟内即可安装运行
-
内置API - 方便使用各种编程语言开发应用
-
本地运行 - 无需将数据发送到远程服务
-
支持从微型模型到大型语言模型
-
占用资源少 - 可按需安装额外依赖并扩展
-
丰富的示例 - 提供50多个Notebook示例涵盖所有功能
主要应用场景
txtai可用于以下主要场景:
- 语义搜索
txtai可以构建语义/相似度/向量/神经搜索应用。与传统的关键词搜索不同,语义搜索可以理解自然语言,找到具有相同含义而不仅仅是相同关键词的结果。
- LLM编排
txtai支持LLM链(在txtai中称为工作流)、多LLM代理和自我批评。它可以实现检索增强生成(RAG),让用户与自己的数据进行对话。
- 语言模型工作流
txtai可以将多个语言模型连接起来构建智能应用。除了强大的LLM外,它还支持许多专门的小型模型,用于提取式问答、自动摘要、语音合成、转录和翻译等特定任务。
快速上手
通过pip安装txtai:
pip install txtai
简单的语义搜索示例:
import txtai
# 创建嵌入
embeddings = txtai.Embeddings()
# 索引文本数据
embeddings.index(["US tops 5 million confirmed virus cases",
"Canada's last fully intact ice shelf has suddenly collapsed, forming a Manhattan-sized iceberg",
"Beijing mobilises invasion craft along coast as Taiwan tensions escalate",
"The National Park Service warns against sacrificing slower friends in a bear attack",
"Maine man wins $1M from $25 lottery ticket"])
# 执行语义搜索
results = embeddings.search("feel good story", 1)
print(results[0]["text"])
这将输出最匹配"feel good story"的结果:"Maine man wins $1M from $25 lottery ticket"
高级功能
除了基本的语义搜索,txtai还支持以下高级功能:
-
混合搜索 - 结合稠密向量和稀疏关键词索引
-
内容存储 - 在关联数据库中存储元数据和对象
-
SQL查询 - 支持向量搜索与SQL查询结合
-
主题建模 - 通过语义图自动发现主题
-
子索引 - 在单个嵌入实例中配置多个子索引
-
RAG管道 - 结合提示、上下文数据存储和生成模型
-
语言模型工作流 - 用YAML定义复杂的多模型工作流
模型指南
txtai推荐使用以下开源模型:
- 嵌入: all-MiniLM-L6-v2
- 图像标题: BLIP
- 零样本分类: BART-Large-MNLI
- 大语言模型: Mistral 7B OpenOrca
- 摘要: DistilBART
- 语音合成: ESPnet JETS
- 语音识别: Whisper
- 翻译: OPUS Model Series
这些模型都允许商业使用,在速度和性能之间取得了很好的平衡。
总结
txtai是一个功能丰富、易于使用的开源框架,为构建智能搜索和语言模型应用提供了强大的工具。无论是简单的语义搜索还是复杂的LLM工作流,txtai都能满足各种需求。它的灵活性和可扩展性使其成为构建下一代AI应用的理想选择。
如果你正在寻找一个全面的嵌入式数据库和语言模型工作流解决方案,不妨尝试一下txtai。它简单易用yet功能强大,可以帮助你快速构建智能应用。
要了解更多信息,请访问txtai GitHub仓库和官方文档。