本篇对嵌入模型的概念、LangChain4j 框架对支持嵌入模型的设计,并对其源码进行分析,最后对API接口进行使用。
什么是Embedding模型
一张图直观解释什么是Embedding:
Embedding 技术优点
- 语义信息捕捉:Embedding 技术能够捕捉数据的语义信息,使得相似的数据在嵌入空间中更接近,有助于模型更好地理解数据之间的关系。
- 维度约减:Embedding 技术将高维数据映射到低维空间,减少了计算和内存需求,提高了模型的效率。
- 上下文感知:嵌入向量通常是上下文感知的,可以考虑数据点与其周围数据点的关系,这对于自然语言处理等任务非常有用。
- 可训练:嵌入向量通常是可训练的,可以与模型一起训练,从而适应特定任务和数据集。
- 泛化能力:适当训练的嵌入可以提高模型的泛化能力,从而使其能够处理新数据和未知情况。
Embedding 技术缺点
- 数据依赖性:Embedding 技术的性能高度依赖于训练数据的质量和多样性。如果训练数据不足或不具代表性,嵌入可能不准确。
- 维度选择:选择适当的嵌入维度可以是挑战性的,太低的维度可能丧失信息,太高的维度可能增加计算成本。
- 过拟合:嵌入可以过度拟合训练数据,特别是在小数据集上。这可能导致模型在未见过的数据上表现不佳。
- 计算复杂性:在训练嵌入时,可能需要大量的计算资源和时间,尤其是对于大规模数据集和高维度嵌入。
- 可解释性差:嵌入向量通常是抽象的,难以解释。这使得难以理解模型为什么做出特定的预测或推荐。
Embedding 技术在大模型中的价值
大模型在文本生成上的优势很明显,但是大模型的特性也带来的一定的弱势;
- 训练数据不实时(如ChatGPT是基于2021年9月之前的数据训练),重新训练成本过高,不现实。
- 输入文本长度有限制,通常限制在几千到数万个tokens之间。
- 无法访问不能公开的文档。
OpenAI发布了一篇文档,说明如何基于embedding使用两步搜索的方式来解决GPT无法处理长文本和最新数据的问题,即 RAG 技术。所以说Embedding是RAG应用落地的核心技术。其在很大程度上决定了搜索相关文本的质量以及影响大模型的输出效果。
LangChain4j 集成嵌入模型
| 模型提供商 | API | 示例 |
|---|---|---|
| OpenAI | OpenAiEmbeddingModel | OpenAiEmbeddingModelExamples |
| DashScope | QwenEmbeddingModel | QwenEmbeddingModelIT |
| QianFan | QianfanEmbeddingModel | QianfanEmbeddingModelIT |
| Zhipu AI | ZhipuAiEmbeddingModel | ZhipuAiEmbeddingModelIT |
| Ollama | OllamaEmbeddingModel | OllamaEmbeddingModelIT |
| Hugging Face | HuggingFaceEmbeddingModel | HuggingFaceEmbeddingModelExample |
| Azure OpenAI | AzureOpenAiEmbeddingModel | AzureOpenAiEmbeddingModelExamples |
| Amazon Bedrock | BedrockTitanEmbeddingModel | BedrockEmbeddingIT |
| Mistral AI | MistralAiEmbeddingModel | mistral-ai |
| Cohere | CohereEmbeddingModel | CohereEmbeddingModelIT |
| Google Vertex AI | VertexAiEmbeddingModel | google-vertex-ai |
| Jina | JinaEmbeddingModel | JinaEmbeddingModelIT |
| Jlama | JlamaEmbeddingModel | jlama |
| LocalAI | LocalAiEmbeddingModel | LocalAiEmbeddingModelIT |
| Cloudflare Workers AI | WorkersAiEmbeddingModel | WorkersAiEmbeddingModelIT |
| Nomic | NomicEmbeddingModel | NomicEmbeddingModelIT |
对于使用示例,大家直接可以参考表格中的示例一栏,官方文档都有,这里就不再多做讲解。对于嵌入模型的底层实现细节,后续在做研究!!
问题:面对市面上这么多的嵌入模型,我们如何选择合适的嵌入模型?
- 选择的标准是什么?
- 选择的方法是什么?
文末总结
嵌入模型是RAG应用落地的核心技术,也是大模型应用落地必不可少的技术。所有对于嵌入模型的选型非常重要,否则影响大模型落地效果。
对于嵌入模型原理、算法等深入的知识,后续在深入学习,先学会如何使用它、利用它,然后才能更好的了解它!