retrieval-generator
GitHubRetrievalGenerator算子用于异步读取文本列,调用LLM服务生成内容并写入新列。支持LightRAGServing后端,处理数据流中的非空行,适用于AI驱动的数据转换场景。
Trigger Scenarios
Install
npx skills add OpenDCAI/DataFlow-WebUI --skill retrieval-generator -g -y
SKILL.md
Frontmatter
{
"name": "retrieval-generator",
"description": "Reference documentation for the RetrievalGenerator operator.\n[Purpose] Reads one text column from storage, forwards every non-empty row to `llm_serving.generate_from_input(...)`, and writes the returned list into a new output column.\n[Default backend] Use `LightRAGServing` by default.\n[Important] `run()` is async. The operator itself does not initialize the serving object; it only awaits `llm_serving.generate_from_input(llm_inputs, system_prompt)`."
}
RetrievalGenerator Operator Reference
RetrievalGenerator is an async operator. It reads text from one column, collects only truthy values, calls await self.llm_serving.generate_from_input(llm_inputs, self.system_prompt), and writes the returned list into output_key.
See examples/good.md for a valid usage pattern and examples/bad.md for common failure cases.
1. Import
from dataflow.operators.core_text import RetrievalGenerator
from dataflow.serving import LightRAGServing
2. Constructor
RetrievalGenerator(
llm_serving=serving,
system_prompt="You are a helpful agent.",
)
| Parameter | Required | Default | Description |
|---|---|---|---|
llm_serving |
Yes | None | Stored on self.llm_serving without validation. run() later awaits self.llm_serving.generate_from_input(llm_inputs, self.system_prompt). |
system_prompt |
No | "You are a helpful agent." |
Stored on self.system_prompt and forwarded unchanged into generate_from_input(...). |
Notes
- The operator does not initialize the serving backend for you.
- Any serving object used here must already be ready before
run()starts. - Default recommendation: use
LightRAGServing.
3. Default LightRAGServing Initialization
If you use the default backend, initialize it like this before constructing RetrievalGenerator:
llm_serving = await LightRAGServing.create(
api_url="https://api.openai.com/v1",
llm_model_name="gpt-4o",
embed_model_name="bge-m3:latest",
embed_binding_host="http://localhost:11434",
document_list=["knowledge_base.txt"],
)
if llm_serving is None:
raise RuntimeError("LightRAGServing initialization failed.")
LightRAGServing.__init__()acceptsapi_url,key_name_of_api_key,llm_model_name,embed_model_name,embed_binding_host,embedding_dim,max_embed_tokens, anddocument_list.LightRAGServing.create(...)buildsself.ragand loads documents.DF_API_KEYmust exist in the environment, otherwise construction raisesValueError.- If document loading fails inside
create(...), it logs the error and returnsNone.
4. run() Signature
await op.run(
storage=storage,
input_key="raw_content",
output_key="generated_content",
)
| Parameter | Required | Default | Description |
|---|---|---|---|
storage |
Yes | None | Used as storage.read("dataframe") and storage.write(df). |
input_key |
No | "raw_content" |
Column name read from each row via row.get(input_key, ""). Only truthy values are appended to llm_inputs. |
output_key |
No | "generated_content" |
Column name assigned as df[output_key] = generated_outputs. |
Return Value
On success, the method returns the string output_key.
If generate_from_input(...) raises an exception, the operator logs the error and returns None.
5. Actual Runtime Logic
- Save
input_keyandoutput_keyontoself. - Read the DataFrame from
storage.read("dataframe"). - Iterate row by row.
- Read
row.get(input_key, ""). - Append
str(raw_content)only when the value is truthy. - Call
generated_outputs = await self.llm_serving.generate_from_input(llm_inputs, self.system_prompt). - Assign
generated_outputstodf[output_key]. - Write the updated DataFrame back with
storage.write(df). - Return
output_key.
There is no placeholder output for skipped rows.
6. Critical Constraints
run()is async. You must call it withawait.- Empty or falsy values in
input_keyare skipped before generation.
Version History
- 2e95d40 Current 2026-08-27 09:04


