关键词提取 (Keyword Extraction)¶
基于 LLM 的关键词提取模块,使用上游 LightRAG 的提示词模板,通过 with_structured_output(KeywordsSchema, method="function_calling") 实现类型安全的结构化提取。输出包含高层关键词(概念/主题)和低层关键词(实体/细节),用于指导知识图谱检索策略。
lightrag_langchain.keywords.extract_keywords
async
¶
通过 LLM 从用户查询中提取高层和低层关键词。
使用查询、示例和语言格式化上游 LightRAG prompt 模板,然后调用
llm.with_structured_output(KeywordsSchema, method="json_mode")
进行类型安全的提取。
Parameters¶
query:
用户的自然语言查询。
llm:
用于提取的 ChatOpenAI(或兼容)实例。必须支持
with_structured_output()。
language:
提取关键词的目标语言。默认为 "Chinese"(根据 D-13)。
通常取自 settings.query_params.keyword_language。
Returns¶
KeywordsSchema
包含 LLM 提取的 high_level_keywords 和 low_level_keywords
的冻结模型。
Notes¶
- 无缓存(D-12)——每次调用都会调用 LLM。
- 无 json_repair 回退(D-14)——结构化输出失败会传播。
method="json_mode"避免了 API 请求中的tool_choice,后者与 DeepSeek v4-pro 的 thinking(reasoning)模式不兼容。关键词提取 prompt 已经指示模型输出 JSON。
Example
from lightrag_langchain.config import settings
from lightrag_langchain.llm import create_llm
from lightrag_langchain.keywords import extract_keywords
llm = create_llm(settings.llm)
result = await extract_keywords(
query="启动东莞市防风Ⅰ级应急响应",
llm=llm,
language=settings.query_params.keyword_language,
)
print(result.high_level_keywords, result.low_level_keywords)
源代码位于: src/lightrag_langchain/keywords.py
lightrag_langchain.keywords.KeywordsSchema ¶
Bases: BaseModel
用于从用户查询中提取关键词的结构化输出。
冻结以防止提取后的意外修改。