You need to enable JavaScript to run this app.
AI 数据湖服务

AI 数据湖服务

复制全文
文本向量化
文本 sparse & dense embedding(BGE模型)
复制全文
文本 sparse & dense embedding(BGE模型)

算子介绍

描述

基于 BGE-M3 的文本嵌入模型,支持稀疏/稠密/token 三级向量生成

核心功能

  • 多粒度嵌入输出:
    • 稀疏向量:词项权重表示,适合关键词检索
    • 稠密向量:1024维语义表示,适合语义相似度计算
    • Token向量:细粒度上下文表征
  • 硬件加速:支持 FP16 量化与 GPU 并行计算

Daft 调用

算子参数

输入

输入列名

说明

texts

包含待处理文本的数组,元素类型为str。

输出

处理后的数组,包含以下字段:

  • dense_embedding: 稠密嵌入向量
  • sparse_embedding: 稀疏嵌入向量
  • token_embedding: 可选的token级嵌向量

参数

如参数没有默认值,则为必填参数

参数名称

类型

默认值

描述

is_output_token_vec

bool

False

是否输出 token 向量 默认值:False

dtype

str

float32

模型精度,支持 float32 和 float16 可选值:["float32", "float16"] 默认值:"float32"

batch_size

int

512

模型推理时的批处理大小 默认值:512

model_path

str

/opt/las/models

模型文件所在的路径 默认值:"/opt/las/models"

model_name

str

BAAI/bge-m3

模型名称 可选值:["BAAI/bge-m3"] 默认值:"BAAI/bge-m3"

rank

int or None

GPU 编号 默认值:None

调用示例

下面的代码展示了如何使用 daft 运行算子基于bge-m3模型计算文本dense embedding、sparse embedding以及token embedding。

from __future__ import annotations

import os

import daft
from daft import col
from daft.las.functions.text.embedding.bge_sparse_dense_embedding import BgeSparseDenseEmbedding
from daft.las.functions.udf import las_udf

if __name__ == "__main__":

    if os.getenv("DAFT_RUNNER", "native") == "ray":
        import logging

        import ray

        def configure_logging():
            logging.basicConfig(
                level=logging.INFO,
                format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
                datefmt="%Y-%m-%d %H:%M:%S.%s".format(),
            )
            logging.getLogger("tracing.span").setLevel(logging.WARNING)
            logging.getLogger("daft_io.stats").setLevel(logging.WARNING)
            logging.getLogger("DaftStatisticsManager").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaScheduler").setLevel(logging.WARNING)
            logging.getLogger("DaftFlotillaDispatcher").setLevel(logging.WARNING)

        ray.init(dashboard_host="0.0.0.0", runtime_env={"worker_process_setup_hook": configure_logging})
        daft.context.set_runner_ray()
    daft.set_execution_config(actor_udf_ready_timeout=600)
    daft.set_execution_config(min_cpu_per_task=0)

    samples = {"text": ["Hello World!", None]}
    is_output_token_vec = True
    dtype = "float16"
    batch_size = 512
    model_path = os.getenv("MODEL_PATH", "/opt/las/models")
    model_name = "BAAI/bge-m3"
    rank = 0

    ds = daft.from_pydict(samples)
    ds = ds.with_column(
        "embeddings",
        las_udf(
            BgeSparseDenseEmbedding,
            construct_args={
                "is_output_token_vec": is_output_token_vec,
                "dtype": dtype,
                "batch_size": batch_size,
                "model_path": model_path,
                "model_name": model_name,
                "rank": rank,
            },
            num_gpus=1,
            batch_size=1,
            concurrency=1,
        )(col("text")),
    )

    ds.show()
    # ╭──────────────┬───────────────────────────────────────────────────────────────────────────────────────────────╮
    # │ text         ┆ embeddings                                                                                    │
    # │ ---          ┆ ---                                                                                           │
    # │ Utf8         ┆ Struct[dense_embedding: List[Float32], sparse_embedding: Map[Utf8: Float32], token_embedding: │
    # │              ┆ List[List[Float32]]]                                                                          │
    # ╞══════════════╪═══════════════════════════════════════════════════════════════════════════════════════════════╡
    # │ Hello World! ┆ {dense_embedding: [-0.0420532…                                                                │
    # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
    # │ None         ┆ {dense_embedding: None,                                                                       │
    # │              ┆ spars…                                                                                        │
    # ╰──────────────┴───────────────────────────────────────────────────────────────────────────────────────────────╯
最近更新时间:2026.01.08 19:14:23
这个页面对您有帮助吗?
有用
有用
无用
无用