mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-08-15 05:04:27 +08:00
### What problem does this PR solve? Enable reading Tag Set tags via API (expose tag_kwd field). The result of the queried list chunks is as shown below: <img width="1422" height="818" alt="image" src="https://github.com/user-attachments/assets/abd1960a-fe34-489e-9d72-525f8e574938" /> ### Type of change - [x] New Feature (non-breaking change which adds functionality) Co-authored-by: heyang.why <heyang.why@alibaba-inc.com>
This commit is contained in:
@@ -155,6 +155,10 @@ async def set():
|
||||
d["question_kwd"] = req["question_kwd"]
|
||||
d["question_tks"] = rag_tokenizer.tokenize("\n".join(req["question_kwd"]))
|
||||
if "tag_kwd" in req:
|
||||
if not isinstance(req["tag_kwd"], list):
|
||||
return get_data_error_result(message="`tag_kwd` should be a list")
|
||||
if not all(isinstance(t, str) for t in req["tag_kwd"]):
|
||||
return get_data_error_result(message="`tag_kwd` must be a list of strings")
|
||||
d["tag_kwd"] = req["tag_kwd"]
|
||||
if "tag_feas" in req:
|
||||
d["tag_feas"] = req["tag_feas"]
|
||||
@@ -317,6 +321,12 @@ async def create():
|
||||
d["question_tks"] = rag_tokenizer.tokenize("\n".join(d["question_kwd"]))
|
||||
d["create_time"] = str(datetime.datetime.now()).replace("T", " ")[:19]
|
||||
d["create_timestamp_flt"] = datetime.datetime.now().timestamp()
|
||||
if "tag_kwd" in req:
|
||||
if not isinstance(req["tag_kwd"], list):
|
||||
return get_data_error_result(message="`tag_kwd` is required to be a list")
|
||||
if not all(isinstance(t, str) for t in req["tag_kwd"]):
|
||||
return get_data_error_result(message="`tag_kwd` must be a list of strings")
|
||||
d["tag_kwd"] = req["tag_kwd"]
|
||||
if "tag_feas" in req:
|
||||
d["tag_feas"] = req["tag_feas"]
|
||||
image_base64 = req.get("image_base64", None)
|
||||
|
||||
@@ -58,6 +58,7 @@ class Chunk(BaseModel):
|
||||
document_id: str = ""
|
||||
docnm_kwd: str = ""
|
||||
important_keywords: list = Field(default_factory=list)
|
||||
tag_kwd: list = Field(default_factory=list)
|
||||
questions: list = Field(default_factory=list)
|
||||
question_tks: str = ""
|
||||
image_id: str = ""
|
||||
@@ -1048,6 +1049,11 @@ async def list_chunks(tenant_id, dataset_id, document_id):
|
||||
items:
|
||||
type: string
|
||||
description: Important keywords.
|
||||
tag_kwd:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
description: Tag keywords.
|
||||
image_id:
|
||||
type: string
|
||||
description: Image ID associated with the chunk.
|
||||
@@ -1137,6 +1143,7 @@ async def list_chunks(tenant_id, dataset_id, document_id):
|
||||
"document_id": sres.field[id]["doc_id"],
|
||||
"docnm_kwd": sres.field[id]["docnm_kwd"],
|
||||
"important_keywords": sres.field[id].get("important_kwd", []),
|
||||
"tag_kwd": sres.field[id].get("tag_kwd", []),
|
||||
"questions": sres.field[id].get("question_kwd", []),
|
||||
"dataset_id": sres.field[id].get("kb_id", sres.field[id].get("dataset_id")),
|
||||
"image_id": sres.field[id].get("img_id", ""),
|
||||
@@ -1251,6 +1258,10 @@ async def add_chunk(tenant_id, dataset_id, document_id):
|
||||
d["docnm_kwd"] = doc.name
|
||||
d["doc_id"] = document_id
|
||||
if "tag_kwd" in req:
|
||||
if not isinstance(req["tag_kwd"], list):
|
||||
return get_error_data_result("`tag_kwd` is required to be a list")
|
||||
if not all(isinstance(t, str) for t in req["tag_kwd"]):
|
||||
return get_error_data_result("`tag_kwd` must be a list of strings")
|
||||
d["tag_kwd"] = req["tag_kwd"]
|
||||
if "tag_feas" in req:
|
||||
d["tag_feas"] = req["tag_feas"]
|
||||
@@ -1283,6 +1294,7 @@ async def add_chunk(tenant_id, dataset_id, document_id):
|
||||
"content_with_weight": "content",
|
||||
"doc_id": "document_id",
|
||||
"important_kwd": "important_keywords",
|
||||
"tag_kwd": "tag_kwd",
|
||||
"question_kwd": "questions",
|
||||
"kb_id": "dataset_id",
|
||||
"create_timestamp_flt": "create_timestamp",
|
||||
@@ -1432,6 +1444,11 @@ async def update_chunk(tenant_id, dataset_id, document_id, chunk_id):
|
||||
items:
|
||||
type: string
|
||||
description: Updated important keywords.
|
||||
tag_kwd:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
description: Updated tag keywords.
|
||||
available:
|
||||
type: boolean
|
||||
description: Availability status of the chunk.
|
||||
@@ -1480,6 +1497,10 @@ async def update_chunk(tenant_id, dataset_id, document_id, chunk_id):
|
||||
return get_error_data_result("`positions` should be a list")
|
||||
d["position_int"] = req["positions"]
|
||||
if "tag_kwd" in req:
|
||||
if not isinstance(req["tag_kwd"], list):
|
||||
return get_error_data_result("`tag_kwd` should be a list")
|
||||
if not all(isinstance(t, str) for t in req["tag_kwd"]):
|
||||
return get_error_data_result("`tag_kwd` must be a list of strings")
|
||||
d["tag_kwd"] = req["tag_kwd"]
|
||||
if "tag_feas" in req:
|
||||
d["tag_feas"] = req["tag_feas"]
|
||||
|
||||
Reference in New Issue
Block a user