LlamaIndex 通过与外部嵌入模型集成来处理文本嵌入,将文本转换为捕获语义意义的数值表示(向量)。 LlamaIndex 没有提供自己的嵌入算法,而是充当一个框架,连接到现有的嵌入提供程序,如 OpenAI、Hugging Face 或 sentence-transformers。 例如,您可以通过它们的 API 使用 OpenAI 的 text-embedding-ada-002
模型,或者使用来自 Hugging Face 的本地模型,如 all-MiniLM-L6-v2
。 这种方法让开发者可以选择最适合他们需求的嵌入模型,而无需锁定在特定的技术中。 LlamaIndex 通过提供预构建的集成来简化此过程 - 您只需配置一次嵌入模型,它就会在数据摄取和查询期间自动处理文本。
当您将数据加载到 LlamaIndex 中时,它会将文档拆分为可管理的小块(例如,段落或章节),并将每个小块传递给所选的嵌入模型。 生成的向量与原始文本一起存储在结构化的索引中,通常与向量数据库(如 FAISS、Pinecone 或 Chroma)配对,以进行高效的相似性搜索。 例如,如果您索引一篇研究论文,LlamaIndex 可能会将其拆分为章节,将每个章节嵌入到一个向量中,并存储这些向量。 在查询期间,您的搜索输入也会使用相同的模型转换为向量,并且系统会根据向量的接近程度检索语义上最相似的文本块。 这使得诸如在知识库中查找相关答案或将用户查询与存储的内容匹配之类的任务成为可能。
开发者可以通过多种方式自定义 LlamaIndex 的嵌入工作流程。 首先,您可以调整块大小和重叠以平衡上下文保留和计算效率 - 例如,将博客文章拆分为具有 20% 重叠的 512 个 token 的块。 其次,您可以根据性能要求交换嵌入模型:本地模型降低了 API 成本,但可能会牺牲准确性,而基于云的模型以更高的延迟提供更高的质量。 第三,LlamaIndex 支持混合方法,让您可以将嵌入与基于关键词的检索相结合,以获得改进的结果。 例如,一个医疗应用程序可能会使用针对临床文本微调的特定领域的嵌入模型,以及传统的关键词匹配来处理技术术语。 通过将嵌入与核心索引逻辑分离,LlamaIndex 提供了灵活性,同时处理将嵌入连接到下游任务(如检索增强生成 (RAG))所需的基础设施。