from abc import ABC from pydantic import UUID4, Field from .vectordb import VectorBaseDocument class EmbeddedChunk(VectorBaseDocument, ABC): content: str embedding: list[float] | None document_id: UUID4 chunk_id: UUID4 metadata: dict = Field(default_factory=dict) similarity: float | None @classmethod def to_context(cls, chunks: list["EmbeddedChunk"]) -> str: context = "" for i, chunk in enumerate(chunks): context += f""" Chunk {i + 1}: Type: {chunk.__class__.__name__} Document ID: {chunk.document_id} Chunk ID: {chunk.chunk_id} Content: {chunk.content}\n """ return context class Config: name = "embedded_documents" category = "Document" use_vector_index = True