llama-hub

llama-hub

社区驱动的大语言模型数据集成工具库

LlamaHub是一个开源项目,汇集了社区贡献的数据加载器、工具和Llama包。该项目旨在简化大型语言模型与多样化知识源的连接过程。LlamaHub提供丰富的工具集,支持创建自定义数据代理,实现智能数据处理和应用。通过PyPI包和LlamaIndex下载器等多种集成方式,LlamaHub为用户提供了便捷的使用体验,有助于充分发挥大型语言模型的潜力。

LlamaHubLlamaIndex数据加载器工具集成开源项目Github

LlamaHub 🦙

[!注意] 此仓库已被归档并设为只读。 随着 LlamaIndex v0.10 的发布,我们将弃用这个 llama_hub 仓库 - 所有集成(数据加载器、工具)和包现已移至核心 llama-index Python 仓库。 LlamaHub 将继续存在。我们正在改版 llamahub.ai,使其指向 llama-index 仓库中可用的所有集成/包/数据集。

原创者:Jesse Zhang (GitHub: emptycrown, Twitter: @thejessezhang),他慷慨地将此仓库捐赠给了 LlamaIndex!

👥 贡献

有兴趣贡献?请查看下方的贡献部分了解更多详情。

这是一个由社区创建的所有数据加载器/读取器/工具/llama-packs/llama-datasets 的简单库。目标是让大型语言模型能够轻松连接到各种知识源。这些是通用工具,旨在用于 LlamaIndexLangChain 等项目中。

加载器和读取器允许您轻松导入数据以供大型语言模型搜索和检索,而工具则允许模型读取和写入第三方数据服务和源。最终,这使您能够创建自己的定制数据代理,与您和您的数据智能协作,充分发挥下一代大型语言模型的能力。

有关各种数据代理的示例,请参阅 notebooks 目录。您可以找到创建数据代理的 Jupyter 笔记本示例,这些代理可以从 Google Docs、SQL 数据库、Notion 和 Slack 加载和解析数据,还可以管理您的 Google 日历和 Gmail 收件箱,或读取和使用 OpenAPI 规范。

要更轻松地浏览可用的集成,请查看此网站:https://llamahub.ai/。

<图片>

使用方法(将 llama-hub 作为 PyPI 包使用)

这些通用加载器旨在用作将数据加载到 LlamaIndex 中的方式,并/或随后在 LangChain 中使用。

安装

pip install llama-hub

LlamaIndex

from llama_index import VectorStoreIndex from llama_hub.google_docs import GoogleDocsReader gdoc_ids = ['1wf-y2pd9C878Oh-FmLH7Q_BQkljdm6TQal-c1pUfrec'] loader = GoogleDocsReader() documents = loader.load_data(document_ids=gdoc_ids) index = VectorStoreIndex.from_documents(documents) index.query('作者在哪里上的学?')

LlamaIndex 数据代理

from llama_index.agent import OpenAIAgent import openai openai.api_key = 'sk-api-key' from llama_hub.tools.google_calendar import GoogleCalendarToolSpec tool_spec = GoogleCalendarToolSpec() agent = OpenAIAgent.from_tools(tool_spec.to_tool_list()) agent.chat('今天日历上的第一件事是什么') agent.chat("请在明天下午4点创建一个审查拉取请求的事件")

有关创建和使用数据代理的各种示例,请参阅 notebooks 目录

LangChain

注意:请确保将 Tool 的描述更改为符合您用例的内容。

from llama_index import VectorStoreIndex from llama_hub.google_docs import GoogleDocsReader from langchain.llms import OpenAI from langchain.chains.question_answering import load_qa_chain # 加载文档 gdoc_ids = ['1wf-y2pd9C878Oh-FmLH7Q_BQkljdm6TQal-c1pUfrec'] loader = GoogleDocsReader() documents = loader.load_data(document_ids=gdoc_ids) langchain_documents = [d.to_langchain_format() for d in documents] # 初始化示例 QA 链 llm = OpenAI(temperature=0) qa_chain = load_qa_chain(llm) question="<在此输入查询>" answer = qa_chain.run(input_documents=langchain_documents, question=question)

加载器使用方法(使用 LlamaIndex 的 download_loader

您也可以使用 LlamaIndex 的 download_loader 在一行代码中使用加载器。

例如,请参阅下面使用 Google Docs 加载器的代码片段。

from llama_index import VectorStoreIndex, download_loader GoogleDocsReader = download_loader('GoogleDocsReader') gdoc_ids = ['1wf-y2pd9C878Oh-FmLH7Q_BQkljdm6TQal-c1pUfrec'] loader = GoogleDocsReader() documents = loader.load_data(document_ids=gdoc_ids) index = VectorStoreIndex.from_documents(documents) index.query('作者在哪里上的学?')

Llama-Pack 使用方法

可以使用 llama-index 附带的 llamaindex-cli 工具下载 Llama-packs:

llamaindex-cli download-llamapack ZephyrQueryEnginePack --download-dir ./zephyr_pack

或直接使用 download_llama_pack 函数:

from llama_index.llama_pack import download_llama_pack # 下载并安装依赖项 LlavaCompletionPack = download_llama_pack( "LlavaCompletionPack", "./llava_pack" )

Llama-Dataset 使用方法

(注:以下我们展示了使用 RagEvaluatorPackLabelledRagDataset 上生成 RAG 基准的模式。然而,还有其他类型的 llama-datasets,如 LabelledEvaluatorDataset,以及用于在各自任务上生成基准的相应 llama-packs。它们都遵循类似的使用模式。请参阅 README 以了解每种类型的 llama-dataset 的更多信息。)

llama-dataset 的主要用途是评估 RAG 系统的性能。具体来说,它作为一个新的测试集(用传统机器学习的术语来说),用于构建 RAG,进行预测,然后执行评估,比较预测的响应与参考响应。要进行评估,推荐的使用模式涉及应用 RagEvaluatorPack。我们建议阅读"评估"模块的 文档 以了解有关我们所有 llama-dataset 的更多信息。

from llama_index.llama_dataset import download_llama_dataset from llama_index.llama_pack import download_llama_pack from llama_index import VectorStoreIndex # 下载并安装基准数据集的依赖项 rag_dataset, documents = download_llama_dataset( "PaulGrahamEssayDataset", "./data" ) # 构建基本 RAG 系统 index = VectorStoreIndex.from_documents(documents=documents) query_engine = VectorStoreIndex.as_query_engine() # 使用 RagEvaluatorPack 进行评估 RagEvaluatorPack = download_llama_pack( "RagEvaluatorPack", "./rag_evaluator_pack" ) rag_evaluator_pack = RagEvaluatorPack( rag_dataset=rag_dataset, query_engine=query_engine ) benchmark_df = rag_evaluate_pack.run() # 也支持异步 arun()

Llama-datasets 也可以直接使用 llamaindex-cli 下载,该工具随 llama-index python 包一起安装:

llamaindex-cli download-llamadataset PaulGrahamEssayDataset --download-dir ./data

llamaindex-cli 下载后,您可以检查数据集及其源文件(存储在 /source_files 目录中),然后将它们加载到 Python 中:

from llama_index import SimpleDirectoryReader from llama_index.llama_dataset import LabelledRagDataset rag_dataset = LabelledRagDataset.from_json("./data/rag_dataset.json") documents = SimpleDirectoryReader( input_dir="./data/source_files" ).load_data()

如何添加加载器/工具/llama-pack

添加加载器/工具/llama-pack 只需 fork 此仓库并提交拉取请求。当发布新的 llama-hub 版本时,Llama Hub 网站将自动更新。但是,在提交 PR 时,请记住以下准则。

步骤 0:设置虚拟环境,安装 Poetry 和依赖项

创建一个新的 Python 虚拟环境。以下命令在 .venv 中创建一个环境并激活它:

python -m venv .venv source .venv/bin/activate

如果您使用的是 Windows,请使用以下命令激活虚拟环境:

.venv\scripts\activate

安装 poetry:

pip install poetry

安装所需的依赖项(这也会安装 llama_index):

poetry install

这将在您的 venv 中创建 llama-hub 的可编辑安装。

步骤 1:创建新目录

对于加载器,在 llama_hub 中创建一个新目录;对于工具,在 llama_hub/tools 中创建目录;对于 llama-packs,在 llama_hub/llama_packs 中创建目录。它可以嵌套在另一个目录中,但请为其命名一个唯一的名称,因为目录名将成为您的加载器的标识符(例如 google_docs)。在新目录中,创建一个 __init__.py 文件,使用 __all__ 指定模块的公共接口,创建一个 base.py 文件,其中包含您的加载器实现,如果需要,创建一个 requirements.txt 文件列出加载器的包依赖项。当使用您的加载器时,这些包将自动安装,所以您不需要再担心这个问题!

如果您愿意,可以通过在 llama_hub 目录中运行以下脚本来创建新目录和文件。只需记得将依赖项放入 requirements.txt 文件中。

./add_loader.sh [新目录名称]

步骤 2:编写 README

在新目录中,创建一个 README.md,模仿现有的 README。它应该包含您的加载器或工具的功能摘要、输入以及如何在 LlamaIndex 和 LangChain 的上下文中使用它。

步骤 3:将加载器添加到 library.json 文件

最后,将您的加载器添加到 llama_hub/library.json 文件中(或 tools/llama-packs/ 下的等效 library.json),以便其他人可以使用。如当前文件所示,添加加载器或工具的类名,以及其 ID、作者等。Llama Hub 网站和 LlamaIndex 中的下载功能会引用此文件。

步骤 4:提交拉取请求!

对主分支创建一个 PR。我们通常会在一天内审核 PR。为了帮助加快流程,在 PR 中或直接在 README 中提供截图可能会有所帮助!展示您的数据加载器或工具的运行情况!

如何添加 llama-dataset

添加 llama-dataset 的过程与添加工具/加载器/llama-pack 类似,也需要 fork 本仓库并提交 Pull Request。但对于 llama-dataset,只有其元数据会被检入本仓库。实际的数据集及其源文件会被检入另一个 Github 仓库,即 llama-datasets 仓库。除了 fork 和克隆本仓库外,你还需要 fork 和克隆那个仓库。

请确保在克隆 llama-datasets 仓库时,在执行 git clone 命令之前设置环境变量 GIT_LFS_SKIP_SMUDGE

# 对于 bash GIT_LFS_SKIP_SMUDGE=1 git clone git@github.com:<你的GitHub用户名>/llama-datasets.git # 使用 ssh GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/<你的GitHub用户名>/llama-datasets.git # 使用 https # 对于 Windows,需要两个命令 set GIT_LFS_SKIP_SMUDGE=1 git clone git@github.com:<你的GitHub用户名>/llama-datasets.git # 使用 ssh set GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/<你的GitHub用户名>/llama-datasets.git # 使用 https

添加 llama-dataset 的高级步骤如下:

  1. 创建 LabelledRagDataset(llama-hub 上提供的第一个 llama-dataset 类)
  2. 使用你选择的 RAG 系统在 LabelledRagDataset 上生成基准结果
  3. 准备数据集的元数据(card.jsonREADME.md
  4. 向本仓库提交 Pull Request 以检入元数据
  5. llama-datasets 仓库 提交 Pull Request 以检入 LabelledRagDataset 和源文件

为协助提交过程,我们准备了一个提交模板笔记本,引导你完成上述步骤。我们强烈建议你使用这个模板笔记本。

(注:你可以使用上述过程提交我们支持的其他类型的 llama-datasets,如 LabelledEvaluatorDataset。)

运行测试

python3.9 -m venv .venv source .venv/bin/activate pip3 install -r test_requirements.txt poetry run make test

更新日志

如果你想跟踪最新版本更新或查看每个版本添加了哪些加载器,请查看我们的完整更新日志

常见问题

合并前如何测试我的加载器?

download_loader 中有一个名为 loader_hub_url 的参数,默认指向本仓库的主分支。你可以将其设置为你的分支或 fork 来测试新加载器。

我应该向 LlamaHub 还是直接向 LlamaIndex 仓库创建 PR?

如果你有数据加载器 PR,默认情况下请尝试向 LlamaHub 创建!在某些情况下我们会做出例外(例如,如果我们认为该数据加载器应该是 LlamaIndex 仓库的核心)。

对于所有其他与 LlamaIndex 相关的 PR,请直接向 LlamaIndex 仓库 创建。

如何在 LlamaHub 上获得验证徽章?

我们刚开始为贡献者提供徽章。目前,我们主要关注早期采用者和官方合作伙伴,但我们正逐步开放徽章考虑给所有提交。如果你有兴趣被考虑,请查看以下标准,如果一切符合,可以通过社区 Discord 联系我们。

我们仍在完善标准,但以下是我们考虑的一些方面:

质量

  • 代码质量,体现在使用编码标准和风格指南。
  • 代码可读性和适当的文档。

可用性

  • 自包含模块,无外部链接或库,易于运行。
  • 模块不应破坏任何现有单元测试。

安全性

  • 安全性考虑,如适当的输入验证、避免 SQL 注入和安全处理用户数据。

社区参与度和反馈

  • 通过点赞数、下载量等衡量模块对库用户的实用性。
  • 模块用户的积极反馈。

注意:

  • 我们可能根据上述标准决定仅为你的部分提交授予徽章。
  • 成为常规贡献者并不保证获得徽章,我们仍会单独审查每个提交。

其他问题?

欢迎加入社区 Discord 或标记官方 Twitter 账号

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多