嵌入存储格式#

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 序列。