将 LlamaIndex 与不同的嵌入模型一起使用

Jay*_*Jay 9 python llama-index

OpenAI 的 GPT 嵌入模型用于所有 LlamaIndex 示例,尽管与 T5 和句子转换器模型相比,它们似乎是最昂贵且性能最差的嵌入模型(请参阅下面的比较)。

如何使用all-roberta-large-v1作为嵌入模型,并结合 OpenAI 的 GPT3 作为“响应生成器”?我什至不确定是否可以使用一种模型来创建/检索嵌入令牌,并使用另一种模型来根据检索到的嵌入生成响应。

例子

以下是我正在寻找的示例:

documents = SimpleDirectoryReader('data').load_data()

# Use Roberta or any other open-source model to generate embeddings
index = ???????.from_documents(documents)

# Use GPT3 here
query_engine = index.as_query_engine()
response = query_engine.query("What did the author do growing up?")

print(response)
Run Code Online (Sandbox Code Playgroud)

型号对比

嵌入模型

来源

Gre*_*sov 7

service_context您可以使用本地模型或 HuggingFace 中的模型在 a 中进行设置:

from langchain.embeddings.huggingface import HuggingFaceEmbeddings
from llama_index import LangchainEmbedding, ServiceContext

embed_model = LangchainEmbedding(
  HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2")
)
service_context = ServiceContext.from_defaults(embed_model=embed_model)
Run Code Online (Sandbox Code Playgroud)

然后,您可以传递此 service_context,或全局设置它:

from llama_index import set_global_service_context

set_global_service_context(service_context)
Run Code Online (Sandbox Code Playgroud)