Abacus AI公布了他们为企业创建 AI 应用的时候面对企业复杂的知识库和不同格式的文档是如何处理的,给了一些详细的工作流。
企业将其数据存放在多个地方,例如Snowflake,GDrive或Salesforce。数据通常是结构化和非结构化数据的组合,通常以CSV,PDF,Word等不同格式存在。
具有复杂表格的PDF文档可能会变得相当棘手,并且通常结构化和非结构化数据混合在一起。
那么到底如何使用所有这些数据来为企业构建LLM应用程序?在Abacus AI,我们已经构建了数千个这样的应用AI系统和LLM应用程序。
需要编排一系列步骤来构建应用程序。从数据连接器开始抓取数据。
接下来是数据处理。
PDF提取 - 由于不同的OCR模型表现不同,因此建议尝试不同的OCR服务,如果PDF中有表格,则必须小心提取行。
分块 - 通常情况下,希望将文档分割成较小的块。对于结构化数据,我们建议将其保留在数据湖或数据仓库中。
嵌入 - 这是关键,您需要根据不同的用例和数据尝试不同的嵌入策略。
例如,嵌入一组Python API将与嵌入一组Word文档不同。因此,您必须非常谨慎地选择嵌入策略。
文档检索器和向量存储库 - 在大多数企业用例中,在LLM步骤之前有一个检索步骤。这是获取具有相关响应的内容并将该内容作为LLM上下文的一部分的过程。现在,当有结构化和非结构化数据时,有几种不同的选择。
如果有大量的非结构化数据和一些来自PDF表格的结构化数据,我们建议选择1,否则我们建议选择2。
选项1 - 元数据过滤器 - 当有大量的非结构化数据和一些结构化数据时,可以在文档检索器和/或向量存储器上使用元数据过滤器。
文档检索系统中的元数据过滤器可以通过使用辅助信息(如作者,日期或标签)来缩小搜索范围,以获取相关文档。相反,向量存储库中存储着表示文档或单词的向量,通过与查询向量的相似度度量来实现基于相似性的检索。
通过将元数据过滤器与向量存储库集成,可以通过确保检索的文档不仅在语义上相关,而且满足元数据所概述的特定辅助标准,来提高检索精度。
选项2 - 如果你的数据库中有大量的结构化数据,我们建议你使用LLM的“文本到SQL”功能,LLM将生成您将在数据源上执行的SQL。
理想情况下,有一个编排器,根据您选择的任何选项,将生成SQL查询或使用适当的元数据过滤器向向量存储发出请求。
企业内部或消费者的最终用户不需要担心数据源,他们只需使用其对聊天机器人的接口 - 自定义chatGPT类似的界面或Teams / Slack上的机器人。
像Abacus AI这样的端到端LLMOps平台可以自动完成每个步骤。作为数据科学家,您可以在几个小时内尝试不同的嵌入,分块,LLM和向量存储策略,并为您的用例选择正确的策略。
有些团队仍然忙于自己构建这些部分。重新发明轮子在每家公司中都可能是一种浪费时间,因此,最好迅速使用LLM应用程序上市,并专注于真正使您的组织与其他组织不同的内容。