仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
人工智能正在快速发展,有许多新的发展。大规模生成式语言模型是一项令人兴奋的新能力,使我们能够添加令人惊叹的功能。创新仍在继续,每周似乎都有新模型和进步出现。
很难过滤掉噪音,知道哪些是现实可行的。虽然我们还没有达到完全的AI自动化,但有很多方法可以将AI集成到业务工作流中。
本文介绍了txtai,一个用于语义搜索、大型语言模型编排和语言模型工作流的全能AI框架。
tetxtai是一个用于语义搜索、大型语言模型编排和语言模型工作流的全能AI框架。
txtai的关键组件是一个嵌入数据库,它结合了向量索引(稀疏和密集)、图网络和关系数据库。
这个基础使得向量搜索成为可能,或者作为大型语言模型(LLM)应用程序的强大知识源。
构建自主代理、检索增强生成(RAG)流程、多模型工作流等更多功能。
以下是关键特性的摘要:
🔎带有SQL、对象存储、主题建模、图分析和多模态索引的向量搜索
📄为文本、文档、音频、图像和视频创建嵌入
💡由语言模型驱动的管道,运行LLM提示、问答、标记、转录、翻译、摘要等功能
↪️️将管道连接在一起并聚合业务逻辑的工作流。txtai处理可以是简单的微服务或多模型工作流。
🤖智能地将嵌入、管道、工作流和其他代理连接在一起以自主解决复杂问题的代理
⚙️Web和ModelContextProtocol(MCP)API。支持JavaScript、Java、Rust和Go绑定。
🔋带有默认值的电池包含,快速启动
☁️本地运行或通过容器编排扩展
txtai使用Python3.10+、HuggingFaceTransformers、SentenceTransformers和FastAPI构建。txtai在Apache2.0许可证下开源。
可以通过pip或Docker安装txtai。以下是如何通过pip安装的示例。
嵌入数据库是实现语义搜索的核心引擎。数据被转换为嵌入向量,其中相似的概念会产生相似的向量。这些向量用于构建大小不同的索引。索引用于查找具有相同含义的结果,而不仅仅是相同的关键词。
嵌入数据库的基本用例是为语义搜索构建近似最近邻(ANN)索引。以下示例对少量文本条目进行索引,以展示语义搜索的价值。
上面的例子显示,对于所有查询,查询文本不在数据中。这就是Transformer模型相对于基于令牌的搜索的强大之处。开箱即用的就是🔥🔥🔥!
嵌入支持更新和删除。upsert操作会插入新数据并更新现有数据。
以下部分运行查询,然后更新一个值更改顶级结果,最后删除更新后的值以恢复到原始查询结果。
嵌入可以保存到存储中并重新加载。
虽然密集向量索引无疑是语义搜索系统的最佳选择,但稀疏关键词索引仍然可以增加价值。可能会有一些情况需要找到精确匹配。
混合搜索结合了稀疏和密集向量索引的结果,兼顾两者的优势。
与语义搜索结果相同。让我们只使用关键词索引来查看这些结果。
可以看到,当嵌入实例仅使用关键词索引时,它只能找到关键词匹配,而不能找到语义匹配。
到目前为止,所有示例都引用原始数据数组来检索输入文本。这在演示中很好,但如果有一百万份文档怎么办?在这种情况下,文本需要从外部数据存储中检索使用id。
内容存储添加了一个关联数据库(例如SQLite、DuckDB),该数据库与向量索引一起存储关联元数据。文档文本、附加元数据和附加对象可以与索引的向量一起存储和检索。
上面唯一的变化是将content标志设置为True。这启用了与索引一起存储文本和元数据(如果提供)。注意如何直接从查询结果中提取文本!
让我们添加一些元数据。
启用内容后,整个字典都会被存储并可以查询。除了向量查询外,txtai接受SQL查询。这使得可以使用向量索引和数据库后端中存储的内容进行组合查询。
上面的例子添加了一个简单的额外字段,即文本长度。
注意第二个查询根据元数据字段length以及similar查询条件进行过滤。这为向量搜索与传统的过滤结合提供了一个很好的组合,有助于识别最佳结果。
除了元数据,二进制内容也可以与文档关联。下面的例子下载一张图片,并将其与相关文本一起插入到嵌入索引中。
主题建模是通过语义图实现的。语义图,也称为知识图谱或语义网络,通过语义关系将节点连接起来形成一个图网络。在txtai中,它们可以利用嵌入索引中固有的关系。
当启用图索引时,每个嵌入实例中的条目都会分配一个主题。主题是通过社区检测算法分组的图节点上的稀疏索引动态创建的。
如上所示,还可以推导出主题类别。
可以在嵌入中配置子索引。单个嵌入实例可以有多个子索引,每个子索引有不同的配置。
我们将构建一个同时具有关键词索引和密集索引的嵌入索引来演示。
再次说明了关键词搜索和语义搜索的区别。第一个搜索调用使用定义的关键词索引,第二个使用密集向量索引。
txtai是一个一体化的AI框架。txtai支持构建自主代理、检索增强生成(RAG)、与数据对话、包含大型语言模型(LLM)的管道和工作流。
RAG管道是txtai对检索增强生成(RAG)的一种实现。该管道通过将提示、上下文数据存储和生成模型结合起来,从内容中提取知识。
以下示例展示了如何让大型语言模型(LLM)使用嵌入数据库作为上下文。
上述逻辑首先构建了一个嵌入索引。然后加载了一个LLM,并使用嵌入索引驱动LLM提示。
RAG管道可以选择返回最佳匹配记录的答案的引用。该引用可以用来解析完整的答案引用。注意上面的嵌入使用了uuid自动序列。
LLM推理也可以单独运行。
语言模型工作流,也称为语义工作流,将语言模型连接起来以构建智能应用程序。
工作流可以与嵌入实例一起运行,类似于关系数据库中的存储过程。工作流可以用Python或YAML编写。我们将演示如何用YAML编写一个工作流。
上述工作流加载了一个嵌入索引,并定义了一个搜索工作流。搜索工作流运行搜索并将结果传递给翻译管道。翻译管道将结果翻译成法语。
在某些情况下,SQL函数可以完成与工作流相同的事情。下面的函数运行翻译管道作为一个函数。
工作流中也可以使用模板的LLM链。工作流是自包含的,它们既可以与嵌入实例一起运行,也可以独立运行。以下工作流使用LLM条件翻译文本为法语,然后检测文本的语言。
AI正以惊人的速度发展。一年前不可能做到的事情现在已经成为可能。本文介绍了txtai,一个一体化的AI框架。可能性是无限的,我们对基于txtai构建的内容感到兴奋!
原文链接:Introducingtxtai,theall-in-oneAIframework
译文-汇智网:http ://www.hubwiz.com/blog/txtai-all-in-one-ai-framework/
添加微信,备注”LLM“进入大模型技术交流群
如果你觉得这篇文章对你有帮助,别忘了点个赞、送个喜欢
/作者:致Great