Merge branch 'feature/rag2' into develop

* feature/rag2:
  [add] batch add chunk for v1
  [fix] index_not_found_exception
  [fix] delete chunk refresh index
  [fix] es vector
  [fix] file upload
  no message
  [add] import qa chunks
  [add] task log
  [fix] qa cache
  [add] batch chunk.  qa_prompt set
  [modify] rag qa chunk
This commit is contained in:
Mark
2026-05-07 18:47:42 +08:00
11 changed files with 700 additions and 134 deletions

View File

@@ -20,13 +20,26 @@ class ChunkCreate(BaseModel):
@property
def chunk_content(self) -> str:
"""
Get the actual content string regardless of input type
"""
"""Get the actual content string regardless of input type"""
if isinstance(self.content, QAChunk):
return f"question: {self.content.question} answer: {self.content.answer}"
return self.content.question # QA 模式下 page_content 存 question
return self.content
@property
def is_qa(self) -> bool:
return isinstance(self.content, QAChunk)
@property
def qa_metadata(self) -> dict:
"""返回 QA 相关的 metadata 字段"""
if isinstance(self.content, QAChunk):
return {
"chunk_type": "qa",
"question": self.content.question,
"answer": self.content.answer,
}
return {}
class ChunkUpdate(BaseModel):
content: Union[str, QAChunk] = Field(
@@ -35,13 +48,26 @@ class ChunkUpdate(BaseModel):
@property
def chunk_content(self) -> str:
"""
Get the actual content string regardless of input type
"""
"""Get the actual content string regardless of input type"""
if isinstance(self.content, QAChunk):
return f"question: {self.content.question} answer: {self.content.answer}"
return self.content.question # QA 模式下 page_content 存 question
return self.content
@property
def is_qa(self) -> bool:
return isinstance(self.content, QAChunk)
@property
def qa_metadata(self) -> dict:
"""返回 QA 相关的 metadata 字段"""
if isinstance(self.content, QAChunk):
return {
"chunk_type": "qa",
"question": self.content.question,
"answer": self.content.answer,
}
return {}
class ChunkRetrieve(BaseModel):
query: str
@@ -51,3 +77,8 @@ class ChunkRetrieve(BaseModel):
vector_similarity_weight: float | None = Field(None)
top_k: int | None = Field(None)
retrieve_type: RetrieveType | None = Field(None)
class ChunkBatchCreate(BaseModel):
"""批量创建 chunk"""
items: list[ChunkCreate] = Field(..., min_length=1, description="chunk 列表")