将 Hugging Face 嵌入与 LlamaIndex 集成:开发者指南

将 Hugging Face 嵌入与 LlamaIndex 集成:开发者指南

关键要点

  • 模块概述llama_index.embeddings.huggingface 桥接了 LlamaIndex 与 Hugging Face 模型,用于定制嵌入。
  • 安装与设置:1. 通过 pip 安装包。2. 在 Python 中配置模块。3. 实例化嵌入模型。4. 使用示例文本测试。
  • 选择合适的模型:根据语言和任务选择模型的重要性,需考虑性能与资源。
  • 代码示例:演示基本嵌入生成、自定义模型、批量处理以及向量索引集成。
  • 优化技巧:高效模型选择、批量处理、调整块大小、资源分配、缓存机制和系统监控。
  • LLM API 集成:与 Novita AI 的 LLM API 集成以执行高级 NLP 任务的步骤。

引言

将 Hugging Face 嵌入与 LlamaIndex 集成为从事高级自然语言处理任务的开发者开辟了无限可能。通过利用 Hugging Face 丰富且最先进的模型在 LlamaIndex 框架中的强大能力,开发者能够构建针对特定语言和领域的高效、精确的检索增强生成(RAG)系统。本指南将引导您完成在 LlamaIndex 中设置和使用 Hugging Face 嵌入的全过程,并提供实用见解和代码示例,以优化您的 NLP 项目。

什么是 llama_index_embedding_huggingface?

llama_index.embeddings.huggingface 模块充当了 LlamaIndex 与 Hugging Face 丰富模型生态之间的桥梁。通过使用该模块,您可以从多种最先进的嵌入模型中进行选择,从而定制 RAG 系统以适应特定的语言、领域或性能需求。

安装与设置

第一步:安装

  • 确保您的系统已安装 Python 和 pip。
  • 打开终端或命令提示符,使用 pip 安装 llama_index_embedding_huggingface 包:
pip install llama_index_embedding_huggingface

第二步:配置

  • 安装完成后,在 Python 脚本中导入该模块:
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
  • 选择最符合您需求的 Hugging Face 嵌入模型。需考虑语言支持、模型大小和性能等因素。

第三步:设置模块

  • 使用所选模型名称实例化 HuggingFaceEmbedding 类:
embedding_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")
  • 此设置即可集成到您的 RAG 流程中,用于将文本数据转换为嵌入向量。

第四步:首次使用

  • 嵌入模型就绪后,您可以继续将其与 LlamaIndex 的其他组件(如文档加载器和向量索引)集成。
  • 使用示例文本测试设置,确保嵌入生成符合预期:
sample_text = "Hello, world of RAG systems!" 
embeddings = embedding_model.get_text_embedding(sample_text) 
print(embeddings)

有关结合 Hugging Face 和 LlamaIndex 的 RAG 项目更多信息,请参阅此博文:使用 LlamaIndex 构建 RAG 电子书“图书管理员”

选择合适的嵌入模型

选择合适的嵌入模型对于 RAG 系统的性能至关重要。嵌入是系统理解和检索数据的核心。模型的选择会影响检索操作的准确性、相关性和效率。

探索可用模型

Hugging Face 提供了大量模型,每种模型都有其独特特性。要探索可用模型,您可以访问 Hugging Face 模型中心。使用筛选器按语言、任务或数据集缩小范围。请关注社区反馈、性能基准以及模型与系统需求的兼容性。

根据语言和任务选择

选择应基于数据的语言以及 RAG 系统需要执行的具体任务。例如,如果您的应用涉及医学文献,则应选择针对医学文本微调的模型。同样,对于多语言应用,支持多种语言的模型是理想选择。

性能考量

需权衡模型大小与性能。较大的模型可能提供更详细的嵌入,但会带来更高的计算资源和延迟开销。

代码使用示例

现在您已选择合适的模型,可以开始使用了。以下详细代码示例演示了如何使用 llama_index.embeddings.huggingface 模块生成文本嵌入。

基本嵌入生成

from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 初始化嵌入模型
embedding_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-en-v1.5")

# 要嵌入的文本
text = "This is a sample text for embedding."

# 生成嵌入
embedding = embedding_model.get_text_embedding(text)
print(embedding)

使用自定义模型嵌入

# 使用不同的模型初始化
custom_embedding_model = HuggingFaceEmbedding(model_name="YourCustomModelName")

# 使用自定义模型生成嵌入
custom_embedding = custom_embedding_model.get_text_embedding(text)

批量嵌入生成

# 文本列表
texts = ["text1", "text2", "text3", ...]

# 为所有文本生成嵌入
embeddings = embedding_model.get_text_embedding(texts)

按需定制

# 自定义嵌入生成
embeddings = embedding_model.get_text_embedding(text, max_length=512)

与向量索引集成

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex

# 加载文档
documents = SimpleDirectoryReader("./data").load_data()

# 创建向量存储索引
index = VectorStoreIndex.from_documents(documents, embed_model=embedding_model)

# 现在 `index` 可用于高效的检索操作

优化嵌入生成的技巧

技巧 1:选择高效模型

选择在准确性和速度之间取得平衡的嵌入模型。较大的模型可能提供更好的性能,但会增加计算时间。

技巧 2:批量处理

利用 llama_index.embeddings.huggingface 模块的批量处理功能,在一次操作中为多个文本生成嵌入,减少重复的启动和拆除开销。

技巧 3:调整块大小

在索引阶段微调块大小和重叠范围,以优化嵌入的粒度。较小的块大小可以带来更精确的嵌入,但可能会增加计算时间。

技巧 4:资源分配

确保您的系统拥有足够的资源(CPU/GPU、内存)来处理嵌入生成过程,尤其是在使用复杂模型时。Novita AI GPU 实例 提供经济实惠、按需付费的 GPU 云服务,助您扩展创新。

此外,Novita AI GPU 实例 可即时访问 Jupyter,并预装 Tensorflow、Pytorch、cuDNN、CUDA、TensorRT、Llama3 和 Stable Diffusion。Novita AI 让您直接通过浏览器使用 GPU 云服务。

技巧 5:缓存机制

实施缓存策略来存储已生成的嵌入,避免对已处理文本进行冗余计算。

技巧 6:监控系统负载

密切关注系统负载,优化并发操作数量,防止系统过载并确保性能稳定。

与 LLM API 集成

将 LLM 与 llama_index.embeddings.huggingface 等嵌入模块集成,可为自然语言处理任务带来显著优势。这种集成能够利用捕捉文本语义细微差别的先进嵌入,创建高效且精确的检索增强生成(RAG)系统。以下是集成 Novita AI 的 LLM API 的分步指南:

1. 前往 novita.ai 并登录

您可以使用 Google 或 GitHub 登录。首次登录时将自动创建新账户。

或者,您也可以使用电子邮件地址注册。

2. 管理 API 密钥

Novita AI 使用请求头中的 Bearer 认证(API 密钥)来验证 API 访问,例如:“Authorization: Bearer {API Key}”。

前往设置中的 “密钥管理” 管理您的密钥。

首次登录时,会自动创建一个默认密钥。您可以通过点击“+ 添加新密钥”来创建更多密钥。

3. 发起 API 调用

以下是使用 Novita AI 聊天补全 API 的 Python 客户端示例。

pip install 'openai>=1.0.0'

from openai import OpenAI

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # 获取 Novita AI API 密钥,请参考:https://novita.ai/docs/get-started/quickstart.html#_2-manage-api-key。
    api_key="<YOUR Novita AI API Key>",
)

model = "Nous-Hermes-2-Mixtral-8x7B-DPO"
stream = True # 或 False
max_tokens = 512

chat_completion_res = client.chat.completions.create(
    model=model,
    messages=[
        {
            "role": "system",
            "content": "Act like you are a helpful assistant.",
        },
        {
            "role": "user",
            "content": "Hi there!",
        }
    ],
    stream=stream,
    max_tokens=max_tokens,
 )

if stream:
    for chunk in chat_completion_res:
        print(chunk.choices[0].delta.content or "", end="")
else:
    print(chat_completion_res.choices[0].message.content)

更多详情,请参阅 Novita AI 模型 API 参考

4. 充值余额

我们为新用户提供包含一定额度的优惠券,以便试用我们的产品。如需增加额度,请访问 账单与支付 并按照 支付方式 指南操作。

结论

将 Hugging Face 嵌入与 LlamaIndex 集成可显著增强 RAG 系统的能力,为处理复杂 NLP 任务提供强大的框架。遵循本指南中的步骤,您可以轻松设置和配置嵌入模型,选择最合适的模型,并通过各种技巧和最佳实践优化性能。

常见问题 (FAQ)

[Bug]:没有名为 ‘llama_index.embeddings.huggingface’ 的模块

运行 pip install llama-index-embeddings-huggingface

[Bug]:从 Hugging Face 加载嵌入模型到 Llama Index 时抛出属性错误

检查您的 torch 版本 !python -c “import torch; print(torch.version)”。降级版本可能会解决问题:!python -m pip install — upgrade torch==1.13.0

Novita AI 是一个一体化的云平台,助力您的 AI 雄心。集成 API、无服务器、GPU 实例——您需要的经济高效工具。无需基础设施,免费开始,让您的 AI 愿景成为现实。

推荐阅读

什么是 RAG:检索增强生成全面介绍

将检索增强生成(RAG)与大语言模型集成的逐步教程

在 LlamaIndex 和 LangChain 之间选择:全面指南