
Jerry Liu • 2023-11-22
介绍 Llama Packs
今天我们激动地推出 Llama Packs 🦙📦— 一个由社区驱动的预打包模块中心,您可以使用它们来快速启动您的 LLM 应用程序。您可以将它们导入以用于各种用例,从构建 Streamlit 应用,到构建基于 Weaviate 的高级检索,再到执行结构化数据提取的简历解析器。同样重要的是,您可以根据需要检查和自定义它们。
它们已在 LlamaHub 上线:我们已与启动合作伙伴共同发布了 16+ 个模板,并且还将添加更多模板!
(致美国的朋友们,感恩节快乐 🦃)
背景
构建 LLM 应用程序时有太多选择,这使得针对特定用例开始构建变得困难。即便是对于 RAG,用户也需要做出以下决策:
- 我应该使用哪个 LLM?嵌入模型?
- 向量数据库?
- 分块/解析策略
- 检索算法
- 集成到应用程序中
每个用例都需要不同的参数,而 LlamaIndex 作为核心 LLM 框架,提供了一整套中立的模块,供用户组合构建应用程序。
但我们需要一种方法让用户更容易地针对其用例开始使用。这正是 Llama Packs 的作用所在。
概览
Llama Packs 可以从两个方面描述
- 一方面,它们是预打包的 模块 ,可以通过参数进行初始化并开箱即用,以实现特定用例(无论是完整的 RAG 管道、应用程序模板等等)。您也可以导入 子模块 (例如 LLM、查询引擎)直接使用。
- 另一方面,LlamaPacks 是 模板 ,您可以检查、修改和使用它们。
您可以通过我们的 llama_index
Python 库或命令行接口 (CLI) 下载它们,只需 一行代码:
CLI
llamaindex-cli download-llamapack <pack_name> --download-dir <pack_directory>
Python
from llama_index.llama_pack import download_llama_pack
# download and install dependencies
VoyageQueryEnginePack = download_llama_pack(
"<pack_name>", "<pack_directory>"
)
Llama Packs 可以涵盖不同的抽象级别 — 有些是完整的预打包模板(完整的 Streamlit / Gradio 应用),有些则组合了一些较小的模块(例如我们与 Weaviate 结合的 SubQuestionQueryEngine)。所有这些都可以在 LlamaHub 找到 👇。您可以通过从下拉菜单中选择“Llama Packs”来过滤 Pack。

我们很高兴能与以下公司/贡献者合作进行本次发布,提供了 16+ 个模板。 下面我们重点介绍几个示例:
- Streamlit / Snowflake (Caroline F.): Streamlit 聊天机器人
- Arize (Mikyo K., Xander S.): Arize Phoenix
- ActiveLoop / DeepLake (Mikayel H., Adhilkhan S.): DeepMemory Pack,多模态检索
- Weaviate (Erika C.): 子问题查询引擎,重试查询引擎
- Voyage AI (Hong L.): Voyage AI Pack
- TruEra (Josh R.): TruLens Eval Pack (这是包含 3 个 Pack 的一个集合)
- Timescale (Matvey A.): Timescale 向量自动检索
- Wenqi G.: LLaVa Completion Pack
这篇博客文章篇幅有限,无法介绍所有模板,在接下来的几天里,我们将对每个 Pack 进行详细介绍。
特别感谢来自 LlamaIndex 团队的 Logan Markewich 和 Andrei Fajardo,使 Llama Packs 成功启动并运行。
示例演练
展示 LlamaPack 功能的最佳方式是提供一个示例。我们将演练一个简单的 Llama Pack,它为用户提供了使用 Voyage AI 嵌入的 RAG 管道设置。

首先,我们下载并使用一组文档初始化 Pack:
from llama_index.llama_pack import download_llama_pack
# download pack
VoyageQueryEnginePack = download_llama_pack("VoyageQueryEnginePack", "./voyage_pack")
# initialize pack (assume documents is defined)
voyage_pack = VoyageQueryEnginePack(documents)
每个 Llama Pack 都实现了一个 get_modules()
函数,允许您检查/使用其中的模块。
modules = voyage_pack.get_modules()
display(modules)
# get LLM, vector index
llm = modules["llm"]
vector_index = modules["index"]
Llama Pack 可以 开箱即用 地运行。通过调用 run
函数,我们将执行 RAG 管道并获得响应。在这种情况下,您无需担心内部实现细节。
# this will run the full pack
response = voyage_pack.run("What did the author do growing up?", similarity_top_k=2)
print(str(response))
The author spent his time outside of school mainly writing and programming. He wrote short stories and attempted to write programs on an IBM 1401. Later, he started programming on a TRS-80, creating simple games and a word processor. He also painted still lives while studying at the Accademia.
第二件重要的事情是,您可以 完全访问 Llama Pack 的代码。这使您可以自定义 Llama Pack、提取代码,或者只是将其作为参考来构建您自己的应用程序。让我们看一下下载到 voyage_pack/base.py
的 Pack,并将 OpenAI 的 LLM 替换为 Anthropic 的。
from llama_index.llms import Anthropic
...
class VoyageQueryEnginePack(BaseLlamaPack):
def __init__(self, documents: List[Document]) -> None:
llm = Anthropic()
embed_model = VoyageEmbedding(
model_name="voyage-01", voyage_api_key=os.environ["VOYAGE_API_KEY"]
)
service_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model)
self.llm = llm
self.index = VectorStoreIndex.from_documents(
documents, service_context=service_context
)
def get_modules(self) -> Dict[str, Any]:
"""Get modules."""
return {"llm": self.llm, "index": self.index}
def run(self, query_str: str, **kwargs: Any) -> Any:
"""Run the pipeline."""
query_engine = self.index.as_query_engine(**kwargs)
return query_engine.query(query_str)
您可以直接重新导入该模块并再次运行它:
from voyage_pack.base import VoyageQueryEnginePack
voyage_pack = VoyageQueryEnginePack(documents)
response = voyage_pack.run("What did the author do during his time in RISD?")
print(str(response))
结论
快来试试吧,并告诉我们您的想法!
贡献
还没加入吗?我们 非常乐意 收录您的贡献!如果您有任何基于 LlamaIndex 的模板,添加它几乎就像将现有代码复制/粘贴到 BaseLlamaPack
子类中一样简单。查看此文件夹以获取完整的示例集:https://github.com/run-llama/llama-hub/tree/main/llama_hub/llama_packs
资源
所有 Llama Packs 都可以在 LlamaHub 上找到:https://llamahub.ai/
完整的 Notebook 演练在这里:https://github.com/run-llama/llama_index/blob/main/docs/examples/llama_hub/llama_packs_example.ipynb