Spaces:
Running
Running
| """KnowledgeDocument model for RAG indexed content.""" | |
| from datetime import datetime | |
| from sqlalchemy import Column, String, DateTime, JSON, Text, Integer | |
| import uuid | |
| from src.config.database import Base | |
| class KnowledgeDocument(Base): | |
| """Represents indexed content from documentation and educational materials.""" | |
| __tablename__ = "knowledge_documents" | |
| id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) | |
| content = Column(Text, nullable=False) | |
| title = Column(String(500), nullable=True) | |
| source_url = Column(String(1000), nullable=True) | |
| file_path = Column(String(1000), nullable=True) | |
| section = Column(String(500), nullable=True) | |
| tags = Column(JSON, default=list) | |
| doc_metadata = Column(JSON, default=dict) | |
| chunk_index = Column(Integer, default=0) | |
| embedding_id = Column(String(255), nullable=True) # ID in Qdrant | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) | |
| def to_dict(self) -> dict: | |
| """Convert model to dictionary.""" | |
| return { | |
| "id": str(self.id), | |
| "content": self.content, | |
| "title": self.title, | |
| "source_url": self.source_url, | |
| "file_path": self.file_path, | |
| "section": self.section, | |
| "tags": self.tags, | |
| "metadata": self.doc_metadata, | |
| "chunk_index": self.chunk_index, | |
| "embedding_id": self.embedding_id, | |
| "created_at": self.created_at.isoformat() if self.created_at else None, | |
| "updated_at": self.updated_at.isoformat() if self.updated_at else None, | |
| } | |
| def to_payload(self) -> dict: | |
| """Convert to Qdrant payload format.""" | |
| return { | |
| "id": str(self.id), | |
| "content": self.content, | |
| "title": self.title or "", | |
| "source_url": self.source_url or "", | |
| "file_path": self.file_path or "", | |
| "section": self.section or "", | |
| "tags": self.tags or [], | |
| "chunk_index": self.chunk_index, | |
| } | |