20 lines
937 B
Python
20 lines
937 B
Python
"""Knowledge base document model for RAG."""
|
|
from sqlalchemy import Column, String, Integer, Text, Boolean, ForeignKey
|
|
from app.models.base import Base, TimestampMixin, TenantMixin
|
|
|
|
|
|
class KnowledgeDoc(Base, TimestampMixin, TenantMixin):
|
|
"""A document in the project knowledge base for RAG retrieval."""
|
|
__tablename__ = "knowledge_docs"
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
project_id = Column(Integer, ForeignKey("projects.id"), nullable=True) # null = tenant-level
|
|
title = Column(String(500), nullable=False)
|
|
content = Column(Text, default="")
|
|
doc_type = Column(String(50), default="text") # text, markdown, url, file
|
|
source = Column(String(500), default="")
|
|
tags = Column(String(500), default="")
|
|
# Simple keyword index for MVP RAG (no vector DB needed)
|
|
keywords = Column(Text, default="[]") # JSON array of keywords
|
|
is_indexed = Column(Boolean, default=True)
|