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