开发者必读:LFM2.5-ColBERT-350M-4bit API参考与集成指南
【免费下载链接】LFM2.5-ColBERT-350M-4bit项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/LFM2.5-ColBERT-350M-4bit
LFM2.5-ColBERT-350M-4bit是一款基于MLX框架的高效4位量化双向检索模型,专为Apple Silicon优化,可实现高性能的句子相似度计算和信息检索功能。该模型源自LiquidAI的LFM2.5-ColBERT-350M,通过格式转换和量化处理,在保持98.7%检索质量的同时,将模型体积压缩至199MB,为开发者提供了轻量级且高效的本地推理解决方案。
模型概述:核心特性与优势
LFM2.5-ColBERT-350M-4bit采用创新的late-interaction检索机制,为每个标记生成128维向量,通过MaxSim算法计算相似度。这种架构使模型在多语言环境中表现出色,支持包括英语、西班牙语、德语、日语和阿拉伯语在内的多种语言。
关键技术参数
- 量化规格:采用
mlx.nn.quantize(mode='affine', bits=4, group_size=64)进行量化 - 向量维度:128维/标记
- 支持语言:英语、西班牙语、德语、法语、意大利语、葡萄牙语、阿拉伯语、瑞典语、挪威语、日语、韩语
- 模型大小:199MB(相比bf16版本减少72%)
- 检索质量:NDCG@10保持率98.7%,Recall@10保持率99.7%
架构特点
模型基于Lfm2BidirectionalModel架构,融合了卷积层和注意力机制:
- 16层混合结构,交替使用卷积层和全注意力层
- SwiGLU激活函数的MLP模块
- 双向注意力机制(无因果掩码)
- 非因果/中心短卷积(对称填充)
快速开始:安装与基础使用
环境要求
- Apple Silicon设备(M系列芯片)
- MLX框架
- Python 3.8+
安装步骤
# 克隆仓库 git clone https://gitcode.com/hf_mirrors/mlx-community/LFM2.5-ColBERT-350M-4bit cd LFM2.5-ColBERT-350M-4bit # 安装依赖 pip install mlx基本使用示例
import mlx.core as mx from lfm2_bidirectional import ColbertModel, ModelArgs import json # 加载配置 with open("config.json", "r") as f: config = json.load(f) args = ModelArgs.from_dict(config) # 加载模型 model = ColbertModel(args, proj_dim=config["mlx"]["proj_dim"]) model.load_weights("model.safetensors") model.eval() # 编码文本 input_ids = mx.array([[1, 234, 567, 345, 7]]) # 示例输入ID attention_mask = mx.array([[1, 1, 1, 1, 1]]) embeddings = model.encode(input_ids, attention_mask) print(f"生成的嵌入向量形状: {embeddings.shape}")API参考:核心类与方法
ModelArgs类
ModelArgs类用于解析和存储模型配置参数,可通过from_dict方法从配置文件加载。
关键属性:
vocab_size: 词汇表大小hidden_size: 隐藏层维度num_hidden_layers: 隐藏层数num_attention_heads: 注意力头数layer_types: 层类型列表(卷积或注意力)
ColbertModel类
ColbertModel是实现ColBERT检索功能的核心类,继承自mlx.nn.Module。
构造函数
ColbertModel(args: ModelArgs, proj_dim: int = 128)args: 模型参数proj_dim: 投影维度,默认为128
核心方法
encode
def encode(self, input_ids, attention_mask=None, normalize: bool = True) -> mx.array生成输入文本的嵌入向量。
input_ids: 输入标记ID数组attention_mask: 注意力掩码normalize: 是否对输出进行L2归一化- 返回: 形状为(B, L, proj_dim)的嵌入向量
量化配置
模型量化参数存储在config.json的quantization字段中:
"quantization": { "mode": "affine", "bits": 4, "group_size": 64 }高级应用:检索与相似度计算
MaxSim相似度计算
ColBERT使用MaxSim算法计算查询和文档之间的相似度,通过对每个查询标记和文档标记的嵌入向量取最大值后求和:
def maxsim(query_embeddings, doc_embeddings): # query_embeddings: (1, Lq, 128) # doc_embeddings: (1, Ld, 128) sim_matrix = mx.matmul(query_embeddings, doc_embeddings.transpose(0, 2, 1)) max_sims = mx.max(sim_matrix, axis=2) return mx.sum(max_sims, axis=1)多语言检索示例
利用模型的多语言支持能力,可以构建跨语言检索系统:
# 编码英文查询和西班牙语文档 query_ids = mx.array([[...]]) # 英文查询的input_ids doc_ids = mx.array([[...]]) # 西班牙语文档的input_ids query_emb = model.encode(query_ids) doc_emb = model.encode(doc_ids) similarity = maxsim(query_emb, doc_emb) print(f"跨语言相似度: {similarity.item()}")性能优化:配置与调优
输入长度配置
模型对查询和文档有不同的长度限制,可在config.json的mlx字段中设置:
"mlx": { "query_length": 32, "document_length": 512 }内存使用优化
- 使用4位量化模型(默认)可显著减少内存占用
- 对于批量处理,可适当调整批量大小以平衡速度和内存使用
- 在推理时设置
model.eval()以禁用梯度计算
评估指标:检索性能参考
多语言检索性能
在MIRACL数据集上的NDCG@10表现:
- 西班牙语: 0.899
- 德语: 0.826
- 日语: 0.923
- 阿拉伯语: 0.924
英文检索性能
在NanoBEIR数据集上的表现:
- NanoNQ: 0.716
- NanoFiQA2018: 0.524
- NanoSciFact: 0.702
- NanoNFCorpus: 0.335
许可证信息
本模型根据LFM Open License v1.0许可发布,详情参见LICENSE文件。该许可证包含商业使用阈值条款,使用前请仔细阅读。
原始模型由Liquid AI开发,本仓库是独立的MLX格式转换和量化版本,不隶属于或由Liquid AI背书。
【免费下载链接】LFM2.5-ColBERT-350M-4bit项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/LFM2.5-ColBERT-350M-4bit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考