嵌入#
1. 概念#
为不同类型的数据(文本、图像、视频)创建嵌入向量,涉及将这些输入转换为机器能够理解和高效处理的数值形式。每种嵌入类型都专注于捕捉其相应数据类型的基本特征。
1.1. 文本嵌入#
文本嵌入将文本数据转换为数值向量。每个向量代表文本的语义含义,使我们能够基于文本的意义而不仅仅是原始形式来处理和比较文本。像OpenAI Embedding这样的技术使用大规模语言模型来理解语言中的上下文和细微差别。而SentenceTransformerEncoder则是专门设计用于创建句子嵌入,通常使用类似BERT的模型。
考虑以下两个句子:
"一个小男孩正在公园里踢足球。"
"一个孩子正在操场上踢足球。"
文本嵌入模型会将这些句子转换为两个高维向量(例如,如果使用text-embedding-3-small则为1536维)。尽管措辞不同,这些向量会非常相似,捕捉到儿童在户外玩球类游戏的共同概念。这种向量转换使机器能够理解和比较上下文之间的语义相似性。
1.2. 图像嵌入#
图像嵌入将图像转换为数值向量,捕捉形状、颜色、纹理和空间层次等基本特征。这种转换通常由卷积神经网络(CNNs)或其他专为图像处理设计的高级神经网络架构执行。生成的嵌入可用于图像分类、相似性比较和检索等任务。
假设我们有一张猫的图片。图像嵌入模型会分析其视觉内容(例如耳朵的形状、毛发的纹理),并将其转换为一个向量。这个向量封装了图像的本质特征,使模型能够识别出这是一只猫,并将其与其他图像区分开来。
2. 类型#
2.1. OpenAIEmbedding#
利用OpenAI的模型生成文本嵌入。这需要OpenAI API密钥。
2.2. MistralEmbedding#
利用Mistral的模型生成文本嵌入。这需要Mistral API密钥。
2.3. SentenceTransformerEncoder#
利用来自Sentence Transformers库的开源模型生成文本嵌入。
2.4. VisionLanguageEmbedding#
利用OpenAI的模型生成图像嵌入向量。这需要OpenAI API密钥。
2.5. AzureOpenAI#
利用OpenAI的模型生成文本嵌入。这需要Azure OpenAI API密钥。
2.6. TogetherEmbedding#
利用Together AI的模型生成文本嵌入。这需要Together AI API密钥。
3. 开始使用#
要使用嵌入功能,您需要导入必要的类。
3.1. 使用 OpenAIEmbedding#
from camel.embeddings import OpenAIEmbedding
from camel.types import EmbeddingModelType
# Initialize the OpenAI embedding with a specific model
openai_embedding = OpenAIEmbedding(model_type=EmbeddingModelType.TEXT_EMBEDDING_3_SMALL)
# Generate embeddings for a list of texts
embeddings = openai_embedding.embed_list(["Hello, world!", "Another example"])
3.2. 使用 MistralEmbedding#
from camel.embeddings import MistralEmbedding
from camel.types import EmbeddingModelType
# Initialize the OpenAI embedding with a specific model
mistral_embedding = MistralEmbedding(model_type=EmbeddingModelType.MISTRAL_EMBED)
# Generate embeddings for a list of texts
embeddings = mistral_embedding.embed_list(["Hello, world!", "Another example"])
3.3. 使用 SentenceTransformerEncoder#
from camel.embeddings import SentenceTransformerEncoder
# Initialize the Sentence Transformer Encoder with a specific model
sentence_encoder = SentenceTransformerEncoder(model_name='intfloat/e5-large-v2')
# Generate embeddings for a list of texts
embeddings = sentence_encoder.embed_list(["Hello, world!", "Another example"])
3.4. 使用 VisionLanguageEmbedding#
from camel.embeddings import VisionLanguageEmbedding
vlm_embedding = VisionLanguageEmbedding()
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
test_images = [image, image]
embeddings = vlm_embedding.embed_list(test_images)
3.5. 使用 AzureOpenAI#
from camel.embeddings import AzureEmbedding
from camel.types import EmbeddingModelType
# Initialize the OpenAI embedding with a specific model
azure_openai_embedding = AzureEmbedding(model_type=EmbeddingModelType.TEXT_EMBEDDING_ADA_2)
# Generate embeddings for a list of texts
embeddings = azure_openai_embedding.embed_list(["Hello, world!", "Another example"])
3.6. 使用 TogetherEmbedding#
from camel.embeddings import TogetherEmbedding
# Initialize the Together AI embedding with a specific model
together_embedding = TogetherEmbedding(model_name="togethercomputer/m2-bert-80M-8k-retrieval")
# Generate embeddings for a list of texts
embeddings = together_embedding.embed_list(["Hello, world!", "Another example"])