贝隆

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
from llama_index.core import Document
from typing import Dict, Any, Optional, List
from pydantic import Field
import json

class CustomDocument(Document):
    """自定义文档类,扩展了额外的元数据和功能"""
    
    # 添加新的字段
    document_type: str = Field(default="general", description="文档类型")
    priority: int = Field(default=1, description="处理优先级")
    custom_tags: List[str] = Field(default_factory=list, description="自定义标签")
    
    def __init__(self, **data: Any):
        # 调用父类初始化,处理向后兼容性
        super().__init__(**data)
    
    def add_custom_tag(self, tag: str) -> None:
        """添加自定义标签"""
        self.custom_tags.append(tag)
    
    def get_document_info(self) -> Dict[str, Any]:
        """获取文档完整信息"""
        return {
            "id": self.id_,
            "type": self.document_type,
            "priority": self.priority,
            "tags": self.custom_tags,
            "metadata": self.metadata,
            "text_length": len(self.text) if self.text else 0
        }
    
# 创建自定义文档实例
custom_doc = CustomDocument(
    text="这是文档内容...",
    metadata={"source": "内部文档", "author": "张三"},
    document_type="report",
    priority=5,
    custom_tags=["重要", "待审核"]
)

# 使用自定义方法
custom_doc.add_custom_tag("技术文档")
info = custom_doc.get_document_info()
print(info)

 

posted on 2025-10-19 22:00  贝隆  阅读(0)  评论(0)    收藏  举报