【RAG】【embeddings48】VoyageAI 嵌入模型使用指南
案例概述本案例展示了如何使用 LlamaIndex 的VoyageEmbedding类与 VoyageAI 嵌入模型进行交互。VoyageAI 嵌入模型原生支持 float、int8、binary 和 ubinary 嵌入类型。本案例演示了如何使用不同的模型、输入类型和嵌入类型。技术栈与核心依赖llama-index-embeddings-voyageai: LlamaIndex 的 VoyageAI 嵌入集成库llama-index-llms-openai: LlamaIndex 的 OpenAI LLM 集成库llama-index: LlamaIndex 核心库VoyageAI: 提供高性能嵌入模型的云服务环境配置首先安装必要的依赖%pip install llama-index-llms-openai %pip install llama-index-embeddings-voyageai !pip install llama-index需要设置 VoyageAI API 密钥import os os.environ[VOYAGE_API_KEY] your-voyage-api-key案例实现使用最新的 voyage-3 嵌入模型默认的嵌入类型是 floatfrom llama_index.embeddings.voyageai import VoyageEmbedding # 使用 input_typesearch_query embed_model VoyageEmbedding( voyage_api_keyYOUR_VOYAGE_API_KEY, model_namevoyage-3, ) embeddings embed_model.get_text_embedding(Hello VoyageAI!) print(len(embeddings)) print(embeddings[:5])1024[-0.010165567509829998, -0.0588739775121212, 0.007418953347951174, 0.004723705351352692, 0.0029206324834376574]使用 int8 嵌入类型与 voyage-3-large 模型embed_model VoyageEmbedding( voyage_api_keyYOUR_VOYAGE_API_KEY, model_namevoyage-3-large, output_dtypeint8, truncationFalse, ) embeddings embed_model.get_text_embedding(Hello VoyageAI!) print(len(embeddings)) print(embeddings[:5])1024[-37, 41, 5, -1, 10]深入探索 voyage-3-large 嵌入模型我们将使用 int8 嵌入类型进行实验下载和加载数据!mkdir -p data/paul_graham/ !wget https://raw.githubusercontent.com/run-llama/llama_index/main/docs/examples/data/paul_graham/paul_graham_essay.txt -O data/paul_graham/paul_graham_essay.txt documents SimpleDirectoryReader(./data/paul_graham/).load_data()构建索引llm OpenAI( modelcommand-nightly, api_keyYOUR_OPENAI_API_KEY, ) embed_model VoyageEmbedding( voyage_api_keyYOUR_VOYAGE_API_KEY, model_namevoyage-3-large, embedding_typeint8, ) index VectorStoreIndex.from_documents( documentsdocuments, embed_modelembed_model )构建检索器search_query_retriever index.as_retriever() search_query_retrieved_nodes search_query_retriever.retrieve( What happened in the summer of 1995? )文本-图像嵌入VoyageAI 现在支持多模态嵌入模型其中文本和图像在相同的嵌入空间中加载图像from PIL import Image import matplotlib.pyplot as plt img Image.open(./data/images/prometheus_paper_card.png) plt.imshow(img)初始化多模态嵌入模型embed_model VoyageEmbedding( voyage_api_keyYOUR_VOYAGE_API_KEY, model_namevoyage-multimodal-3, truncationFalse, )图像嵌入embeddings embed_model.get_image_embedding( ./data/images/prometheus_paper_card.png ) print(len(embeddings)) print(embeddings[:5])1024[0.06298828125, -0.0206298828125, 0.01055908203125, 0.0072021484375, 0.0269775390625]文本嵌入embeddings embed_model.get_text_embedding(prometheus evaluation model) print(len(embeddings)) print(embeddings[:5])1024[0.12255859375, -0.0277099609375, 0.028076171875, 0.035888671875, 0.0262451171875]案例效果通过本案例您可以成功连接到 VoyageAI 嵌入服务并使用不同的嵌入模型使用不同的嵌入类型float、int8、binary、ubinary生成文本嵌入向量使用 VoyageAI 的多模态嵌入模型为文本和图像生成嵌入向量构建基于 VoyageAI 嵌入的向量索引和检索系统获取嵌入向量的具体数值可用于后续的相似度计算或其他NLP任务实现思路环境准备安装必要的依赖库包括 llama-index 和 llama-index-embeddings-voyageaiAPI 配置设置 VoyageAI API 密钥模型初始化使用VoyageEmbedding类初始化嵌入模型指定模型名称和嵌入类型文本嵌入调用get_text_embedding方法生成文本嵌入向量多模态嵌入使用多模态模型为文本和图像生成嵌入向量应用集成将嵌入向量集成到向量索引和检索系统中扩展建议异步调用探索异步版本的嵌入生成方法以提高大批量文本的处理效率缓存机制实现嵌入向量缓存避免对相同文本重复计算批量处理优化批量文本嵌入的处理流程提高大规模数据处理的效率多语言支持测试 VoyageAI 嵌入模型在不同语言文本上的表现应用场景将 VoyageAI 嵌入集成到更广泛的应用中如文档检索、问答系统、推荐系统等总结本案例展示了如何使用 LlamaIndex 与 VoyageAI 嵌入模型进行交互。通过VoyageEmbedding类我们可以轻松地利用 VoyageAI 提供的高性能嵌入模型来生成文本和图像的嵌入向量。VoyageAI 的多模态嵌入模型特别适合需要处理文本和图像的应用场景而其支持的不同嵌入类型float、int8、binary、ubinary则为不同的应用需求提供了灵活性。这种方法为开发者提供了一种简单而强大的方式来集成高质量的嵌入功能到他们的应用中。