Agent SkillsOpenDCAI/DataFlow-WebUI › embedding-generator

embedding-generator

GitHub

EmbeddingGenerator算子参考文档,介绍如何将DataFrame文本列转换为向量,支持远程API、本地模型及vLLM等多种服务配置,用于检索、聚类等下游任务。

skills/canonical/core_text/generate/embedding-generator/SKILL.md OpenDCAI/DataFlow-WebUI

Trigger Scenarios

需要生成文本嵌入向量 配置EmbeddingGenerator算子 选择嵌入服务提供商

Install

npx skills add OpenDCAI/DataFlow-WebUI --skill embedding-generator -g -y
More Options

Non-standard path

npx skills add https://github.com/OpenDCAI/DataFlow-WebUI/tree/main/skills/canonical/core_text/generate/embedding-generator -g -y

Use without installing

npx skills use OpenDCAI/DataFlow-WebUI@embedding-generator

指定 Agent (Claude Code)

npx skills add OpenDCAI/DataFlow-WebUI --skill embedding-generator -a claude-code -g -y

安装 repo 全部 skill

npx skills add OpenDCAI/DataFlow-WebUI --all -g -y

预览 repo 内 skill

npx skills add OpenDCAI/DataFlow-WebUI --list

SKILL.md

Frontmatter
{
    "name": "embedding-generator",
    "description": "Reference documentation for the EmbeddingGenerator operator. Covers the constructor, embedding serving requirements, actual dataframe flow, and runnable pipeline usage.\nUse when: converting one text column in a dataframe into embedding vectors for retrieval, clustering, similarity search, or downstream vector-based operators."
}

EmbeddingGenerator Operator Reference

EmbeddingGenerator reads one text column from the current dataframe, sends the full column as a batch into an embedding service, writes the returned vectors into output_key, persists the dataframe, and returns [output_key].

1. Imports

from dataflow.operators.core_text import EmbeddingGenerator
from dataflow.serving import APILLMServing_request
from dataflow.serving import LocalEmbeddingServing
from dataflow.serving import LiteLLMServing
from dataflow.serving import LocalModelLLMServing_vllm

2. Embedding Serving Options

Option A: Remote API with APILLMServing_request

APILLMServing_request(
    api_url="https://api.openai.com/v1/embeddings",
    key_name_of_api_key="DF_API_KEY",
    model_name="text-embedding-3-small",
    max_workers=20,
)

This works because APILLMServing_request implements:

generate_embedding_from_input(texts)

Option B: Local embedding model with LocalEmbeddingServing

LocalEmbeddingServing(
    model_name="all-MiniLM-L6-v2",
    device=None,
    max_workers=2,
)

Requires:

pip install "open-dataflow[vectorsql]"

Option C: Provider-agnostic API via LiteLLMServing

LiteLLMServing(
    serving_type="embedding",
    model_name="text-embedding-3-small",
    key_name_of_api_key="DF_API_KEY",
    max_workers=10,
)

This is suitable when you want to route embedding requests through LiteLLM.

Option D: Local vLLM backend with LocalModelLLMServing_vllm

LocalModelLLMServing_vllm(
    hf_model_name_or_path="your-embedding-capable-model",
    vllm_tensor_parallel_size=1,
)

This works only if the selected vLLM model/backend supports embedding through llm.embed(...).

Practical List of Supported Serving Examples

The following classes in dataflow.serving currently expose generate_embedding_from_input(...) and are practical candidates for EmbeddingGenerator:

  • APILLMServing_request
  • LocalEmbeddingServing
  • LiteLLMServing
  • LocalModelLLMServing_vllm

The following commonly imported serving is not suitable here:

  • LocalModelLLMServing_sglang: its generate_embedding_from_input(...) currently raises NotImplementedError

3. Constructor

EmbeddingGenerator(
    embedding_serving=emb,
)
Parameter Required Default Description
embedding_serving Yes None Service object that provides generate_embedding_from_input(texts)

Important Serving Note

Although the constructor type annotation is LLMServingABC, the operator does not call generate_from_input(...). It specifically calls:

embedding_serving.generate_embedding_from_input(texts)

So the practical requirement is not just “any LLMServingABC”, but a serving object that actually implements generate_embedding_from_input(...).

4. run() Signature

op.run(
    storage=self.storage.step(),
    input_key="text",
    output_key="embeddings",
)
# returns: [output_key]
Parameter Required Default Description
storage Yes None Current operator-step storage object
input_key No "text" Existing dataframe column containing texts
output_key No "embeddings" Column written with embedding vectors

5. Actual Execution Logic

The current implementation behaves as follows:

  1. Read the dataframe from storage.
  2. Read the column dataframe[input_key].
  3. Convert that column into a Python list with tolist().
  4. Call:
embedding_serving.generate_embedding_from_input(texts)
  1. Write the returned embedding list into dataframe[output_key].
  2. Persist the dataframe through storage.write(dataframe).
  3. Return [output_key].

6. Important Rules

  1. input_key must already exist in the current dataframe.
  2. The operator sends the full text column as one batch to generate_embedding_from_input(...).
  3. The operator does not perform missing-value filtering or type normalization before sending the texts.
  4. output_key is overwritten silently if it already exists.
  5. The return value is a list containing the output column name, not the bare string.
  6. When using APILLMServing_request, api_url should point to an embedding endpoint such as /v1/embeddings, not /v1/chat/completions.
  7. A service being an LLMServingABC subclass is not sufficient by itself; it must actually implement generate_embedding_from_input(...).

7. Typical Usage

from dataflow.operators.core_text import EmbeddingGenerator
from dataflow.serving import APILLMServing_request

embedding_serving = APILLMServing_request(
    api_url="https://api.openai.com/v1/embeddings",
    key_name_of_api_key="DF_API_KEY",
    model_name="text-embedding-3-small",
    max_workers=20,
)

generator = EmbeddingGenerator(
    embedding_serving=embedding_serving,
)

generator.run(
    storage=self.storage.step(),
    input_key="content",
    output_key="embedding",
)

Version History

  • 2e95d40 Current 2026-08-27 09:03

Same Skill Collection

skills/canonical/core_text/eval/bench-dataset-evaluator-question/SKILL.md
skills/canonical/core_text/eval/bench-dataset-evaluator/SKILL.md
skills/canonical/core_text/eval/prompted-evaluator/SKILL.md
skills/canonical/core_text/eval/text2qa-sample-evaluator/SKILL.md
skills/canonical/core_text/eval/unified-bench-dataset-evaluator/SKILL.md
skills/canonical/core_text/filter/general-filter/SKILL.md
skills/canonical/core_text/filter/kcentergreedy-filter/SKILL.md
skills/canonical/core_text/filter/prompted-filter/SKILL.md
skills/canonical/core_text/generate/bench-answer-generator/SKILL.md
skills/canonical/core_text/generate/chunked-prompted-generator/SKILL.md
skills/canonical/core_text/generate/format-str-prompted-generator/SKILL.md
skills/canonical/core_text/generate/prompted-generator/SKILL.md
skills/canonical/core_text/generate/retrieval-generator/SKILL.md
skills/canonical/core_text/generate/text2multihopqa-generator/SKILL.md
skills/canonical/core_text/refine/pandas-operator/SKILL.md
skills/canonical/core_text/refine/prompted-refiner/SKILL.md
skills/canonical/core_text/SKILL.md
skills/canonical/dataflow-dev/SKILL.md
skills/canonical/dataflow-operator-builder/SKILL.md
skills/canonical/generating-dataflow-pipeline/SKILL.md
skills/canonical/prompt-template-builder/SKILL.md
skills/canonical/core_text/generate/random-domain-knowledge-row-generator/SKILL.md

Metadata

Files
0
Version
2e95d40
Hash
8fe6d2d0
Indexed
2026-08-27 09:03

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-27 20:00
浙ICP备14020137号-1 $Map of visitor$