| from typing import TypedDict, Optional | |
| class VectorMetadata(TypedDict, total=False): | |
| source_document: str # filename or arxiv_id | |
| paper_title: Optional[str] | |
| authors: Optional[str] # comma-joined list | |
| source: str # upload | arxiv | semantic_scholar | openalex | |
| publication_year: Optional[str] | |
| arxiv_id: Optional[str] | |
| doi: Optional[str] | |
| subject_areas: Optional[str] # comma-joined list | |
| section_id: Optional[str] | |
| paragraph_ref: Optional[str] | |
| page_number: Optional[int] | |
| chunk_index: int | |
| upload_id: Optional[str] | |
| content: Optional[str] # stored text for retrieval | |