LlamaIndex(以前称为 GPT Index)是一个开源项目,它在 LLM 和外部数据源(如 API、PDF、SQL 等)之间提供一个简单的接口进行交互。它提了供结构化和非结构化数据的索引,有助于抽象出数据源之间的差异。它可以存储提示工程所需的上下文,处理当上下文窗口过大时的限制,并有助于在查询期间在成本和性能之间进行权衡。
LllamaIndex 以专用索引的形式提供独特的数据结构:
- 向量存储索引:最常用,允许您回答对大型数据集的查询。
- 树索引:对于总结文档集合很有用。
- 列表索引:对于合成一个结合了多个数据源信息的答案很有用。
- 关键字表索引:用于将查询路由到不同的数据源。
- 结构化存储索引:对于结构化数据(例如 SQL 查询)很有用。
- 知识图谱索引:对于构建知识图谱很有用。
LlamaIndex 还通过 LlamaHub 提供数据连接器,LlamaHub 是一个开源存储库,包含了各种数据加载器,如本地目录、Notion、Google Docs、Slack、Discord 等。
LlamaIndex的重点放在了Index上,也就是通过各种方式为文本建立索引,有通过LLM的,也有很多并非和LLM相关的。LangChain的重点在 Agent 和 Chain 上,也就是流程组合上。可以根据你的应用组合两个,如果你觉得问答效果不好,可以多研究一下LlamaIndex。如果你希望有更多外部工具或者复杂流程可以用,可以多研究一下LangChain。
尽管LlamaIndex和LangChain在它们的主要卖点上有很多重叠,即数据增强的摘要和问答,但它们也有一些区别。LangChain提供了更细粒度的控制,并覆盖了更广泛的用例。然而,LlamaIndex的一个很大的优势是能够创建层次化的索引,这在语料库增长到一定大小时非常有帮助。
总的来说,这两个有用的库都很新,还在发展阶段,每周或每月都会有比较大的更新。也许LangChain在不久的将来合并了LlamaIndex,提供了一个完整统一的解决方案。