跳到主要内容

嵌入向量

嵌入向量

嵌入模型将文本、图像或信号转换为表示含义的向量。它们以结构化的方式保持关系,使其适用于边缘 AI 任务,如自然语言理解、语义搜索、推荐系统和情境感知。嵌入模型是仅编码器的转换器(即它们是转换器,但不是生成式的)- 与 LLM 相比,这种限制为受限的边缘 AI 应用提供了两个有用的特性:模型更小,且不会产生幻觉。

QueenKingWomanManv1 (feature 1)v2 (feature 2)Wordv1v2Queen0.01.0King1.01.0Woman0.00.0Man1.00.0

King - Man + Woman = Queen

用 Python 数组表示:

embedding_vectors = {
"King": [1.0, 1.0],
"Queen": [0.0, 1.0],
"Man": [1.0, 0.0],
"Woman": [0.0, 0.0]
}

向量运算成立:

King - Man + Woman = Queen

分词器

LLM 和嵌入模型处理的是数字而不是原始文本。分词器将文本预处理为数字数组 - 每个数字代表一个词、子词或字符,然后将这些分词传递给语言模型。您可以在下面尝试交互式 GPT-4 分词器:

加载中...

安装 llama-cpp-python

备注

本指南假设您已经熟悉 Astra 开发板的设置。如果还没有,请参考设置教程

信息

本快速指南适用于所有 SL16xx 开发板。虽然推理性能可能有所不同,但所有 Astra SL 系列处理器的步骤都相同。

要在您的 Astra 开发板上运行嵌入,我们将使用 llama-cpp-python 包,它为 Georgi Gerganov 的 llamacpp 提供了便捷的 Python 绑定。此 wheel 已随 requirements.txt(适用于 Astra OOBE SDK 1.8(kirkstone)及以下版本)或 requirements-py312.txt(适用于 Astra OOBE SDK 2.0(scarthgap)及以上版本)一起安装。

SQLite3 is required for certain AI model operations.(Astra SDK OOBE v1.7 images and above already have SQLite3 pre-installed). Install it using the following commands:

边缘设备上的嵌入

让我们尝试运行完整的文本嵌入模型 sentence-transformers/all-MiniLM-L6-v2 - 这是 Hugging Face 上最受欢迎的模型之一。该模型使用从 Reddit、Stack Overflow 和 Yahoo! Answers 等来源提取的 10 亿个句子对进行了微调。

我们的代码示例使用字符串输入运行模型,返回一个 384 维向量作为答案:

python3 -m embeddings.minilm "synaptics astra example!"

您会看到很多数字。在下一个快速指南 AI 文本助手 中,我们将看到这些向量的一些实际应用,在那里我们将构建一个简单的问答助手。