配置LLM与嵌入模型

索引

配置LLM模型

使用LLM模型的模块

大多数使用LLM模型的模块都可以通过llm参数来指定LLM模型。

以下模块可以使用生成器模块,其中包括llama_index_llm

支持的LLM模型

我们支持LlamaIndex所支持的大部分大语言模型。您可以通过配置llm参数来使用不同类型的LLM接口:

大语言模型类型

llm参数

描述

OpenAI

openai

适用于OpenAI模型(GPT-3.5、GPT-4)

OpenAILike

openailike

适用于具有OpenAI兼容API的模型(如Mistral、Claude)

Ollama

ollama

用于本地运行Ollama模型

Bedrock

bedrock

适用于AWS Bedrock模型

例如,如果您想使用OpenAILike模型,可以将llm参数设置为openailike

nodes:
  - node_line_name: node_line_1
    nodes:
      - node_type: generator
        modules:
          - module_type: llama_index_llm
            llm: openailike
            model: mistralai/Mistral-7B-Instruct-v0.2
            api_base: your_api_base
            api_key: your_api_key

在上面的示例中,你可以看到model参数。 这是用于LLM模型的参数。 你可以为LlamaIndex LLM初始化设置模型参数。 最常用的参数包括modelmax_tokentemperature。 请查阅LlamaIndex LLM了解可以为模型参数设置哪些值。

使用HuggingFace模型

使用HuggingFace模型主要有两种方式:

  1. 通过OpenAILike接口(推荐用于托管API端点):

nodes:
  - node_line_name: node_line_1
    nodes:
      - node_type: generator
        modules:
          - module_type: llama_index_llm
            llm: openailike
            model: mistralai/Mistral-7B-Instruct-v0.2
            api_base: your_api_base
            api_key: your_api_key
  1. 通过直接集成HuggingFace(适用于本地部署):

nodes:
  - node_line_name: node_line_1
    nodes:
      - node_type: generator
        modules:
          - module_type: llama_index_llm
            llm: huggingface
            model_name: mistralai/Mistral-7B-Instruct-v0.2
            device_map: "auto"
            model_kwargs:
              torch_dtype: "float16"

通用参数

LLM配置中最常用的参数包括:

  • model: 模型标识符或名称

  • max_tokens: 响应中的最大token数量

  • temperature: 控制输出结果的随机性(取值范围0.0到1.0)

  • api_base: API端点URL(用于托管模型)

  • api_key: 认证密钥(如需)

如需查看完整参数列表,请参阅 LlamaIndex LLM文档

添加更多LLM模型

您可以为AutoRAG添加更多LLM模型。 只需调用autorag.generator_models并添加新的键值对即可添加模型。 例如,若想添加用于测试的MockLLM模型,请执行以下代码。

注意

这是LlamaIndex升级到v0.10.0版本的重大更新。 llms的集成现在需要安装到不同的包中。 因此,在添加模型之前,您需要找到并安装适合您模型的正确包。 您可以在这里找到相关包。

import autorag
from llama_index.core.llms.mock import MockLLM

autorag.generator_models['mockllm'] = MockLLM

然后您可以在配置YAML文件中使用mockllm

注意

添加新的LLM模型时,应该添加类本身而非实例。

此外,它必须遵循LlamaIndex LLM的接口规范。

配置嵌入模型

使用嵌入模型的模块

使用嵌入模型的模块可以通过embedding_model参数来指定LLM模型。

在YAML文件中配置模型名称

为便于使用,自v0.3.13版本起,我们支持在YAML文件中配置模型名称。

我们支持这个新的配置选项,同时也兼容下面描述的旧版配置选项。 如果您之前使用的是v0.3.13之前的版本,可以继续使用旧版配置选项。

我们支持以下嵌入模型类型:

  • openai

  • Hugging Face

  • 模拟

  • ollama

  • openai_like

您可以直接在YAML文件的vectordb部分配置嵌入模型选项。 如需了解如何在AutoRAG中配置vectordb, 请点击此处

例如,

vectordb:
- name: autorag_test
  db_type: milvus
  embedding_model:
  - type: huggingface
    model_name: intfloat/multilingual-e5-large-instruct
  ...

vectordb:
- name: autorag_test
  db_type: milvus
  embedding_model:
  - type: openai
    model_name: text-embedding-3-small
  ...

如需使用自定义嵌入模型,只需在HuggingFace(或Ollama)类型的嵌入模型配置中修改model_name参数即可。

支持的嵌入模型(旧版)

默认情况下,我们支持OpenAI嵌入模型和部分本地模型。 如需更改嵌入模型,您可以将embedding_model参数修改为以下值:

嵌入模型类型

embedding_model参数

默认的openai嵌入模型(text-embedding-ada-002)

openai

OpenAI大型嵌入模型 (text-embedding-3-large)

openai_embed_3_large

openai小型嵌入模型 (text-embedding-3-small)

openai_embed_3_small

BAAI/bge-small-en-v1.5

huggingface_baai_bge_small

cointegrated/rubert-tiny2

huggingface_cointegrated_rubert_tiny2

sentence-transformers/all-mpnet-base-v2

huggingface_all_mpnet_base_v2

BAAI/bge-m3

huggingface_bge_m3

例如,如果您想使用OpenAI大型文本嵌入模型,可以在设置向量数据库时将embedding_model参数设为openai_embed_3_large

vectordb:
  - name: chroma_openai
    db_type: chroma
    client_type: persistent
    embedding_model: openai_embed_3_large
    collection_name: openai_embed_3_large
nodes:
  - node_line_name: node_line_1
    nodes:
      - node_type: retrieval
        modules:
          - module_type: vectordb
            vectordb: chroma_openai

添加您的嵌入模型(旧版)

您可以为AutoRAG添加更多嵌入模型。 只需调用autorag.embedding_models并添加新的键值对即可添加。 例如, 如果您想为韩语嵌入添加[KoSimCSE](https://huggingface.co/BM-K/KoSimCSE-roberta-multitask)模型, 请执行以下代码。

import autorag
from autorag import LazyInit
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

autorag.embedding_models['kosimcse'] = LazyInit(HuggingFaceEmbedding, model_name="BM-K/KoSimCSE-roberta-multitask")

然后你可以在配置YAML文件中使用kosimcse

注意

当您添加新的嵌入模型时,应使用auto-rag中的LazyInit类。附加参数必须是LazyInit初始化时的关键字参数。

使用vllm

您可以使用vllm来调用本地大语言模型。更多信息请查阅vllm生成器模块文档。