嵌入存储格式#
llm embed
命令的默认输出格式是一个由浮点数组成的 JSON 数组。
LLM 以空间高效的格式存储嵌入:一个由 32 位浮点数组成的 little-endian 二进制序列,每个浮点数使用 4 字节表示。
这些存储在 SQLite 数据库的 BLOB
列中。
以下 Python 函数可用于在此格式和浮点数数组之间进行转换
import struct
def encode(values):
return struct.pack("<" + "f" * len(values), *values)
def decode(binary):
return struct.unpack("<" + "f" * (len(binary) // 4), binary)
这些函数作为 llm.encode()
和 llm.decode()
可用。
如果您使用 NumPy,可以像这样解码这些二进制值之一
import numpy as np
numpy_array = np.frombuffer(value, "<f4")
这里的 <f4
格式字符串确保 NumPy 将数据视为一个由 32 位浮点数组成的 little-endian 序列。