diff --git a/surfsense_backend/alembic/versions/eb0c978da8fd_add_inference_params_to_searchspaces.py b/surfsense_backend/alembic/versions/eb0c978da8fd_add_inference_params_to_searchspaces.py new file mode 100644 index 000000000..43ae4676f --- /dev/null +++ b/surfsense_backend/alembic/versions/eb0c978da8fd_add_inference_params_to_searchspaces.py @@ -0,0 +1,38 @@ +"""add inference_params to searchspaces + +Revision ID: eb0c978da8fd +Revises: 22 +Create Date: 2025-10-06 02:54:11.618100 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'eb0c978da8fd' +down_revision: Union[str, None] = '22' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f('chucks_search_index'), table_name='chunks', postgresql_using='gin') + op.drop_index(op.f('chucks_vector_index'), table_name='chunks', postgresql_using='hnsw') + op.drop_index(op.f('document_search_index'), table_name='documents', postgresql_using='gin') + op.drop_index(op.f('document_vector_index'), table_name='documents', postgresql_using='hnsw') + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.create_index(op.f('document_vector_index'), 'documents', ['embedding'], unique=False, postgresql_using='hnsw') + op.create_index(op.f('document_search_index'), 'documents', [sa.literal_column("to_tsvector('english'::regconfig, content)")], unique=False, postgresql_using='gin') + op.create_index(op.f('chucks_vector_index'), 'chunks', ['embedding'], unique=False, postgresql_using='hnsw') + op.create_index(op.f('chucks_search_index'), 'chunks', [sa.literal_column("to_tsvector('english'::regconfig, content)")], unique=False, postgresql_using='gin') + # ### end Alembic commands ### diff --git a/surfsense_backend/app/db.py b/surfsense_backend/app/db.py index 99be9f277..2fe79f8d1 100644 --- a/surfsense_backend/app/db.py +++ b/surfsense_backend/app/db.py @@ -205,6 +205,8 @@ class SearchSpace(BaseModel, TimestampMixin): name = Column(String(100), nullable=False, index=True) description = Column(String(500), nullable=True) + inference_params = Column(JSON, nullable=True) + user_id = Column( UUID(as_uuid=True), ForeignKey("user.id", ondelete="CASCADE"), nullable=False ) diff --git a/surfsense_backend/app/schemas/search_space.py b/surfsense_backend/app/schemas/search_space.py index 00bfdc0f6..3dd8da4e8 100644 --- a/surfsense_backend/app/schemas/search_space.py +++ b/surfsense_backend/app/schemas/search_space.py @@ -1,14 +1,21 @@ import uuid from datetime import datetime -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel, ConfigDict, Field from .base import IDModel, TimestampModel +class InferenceParams(BaseModel): + temperature: float | None = Field(None, ge=0.0, le=2.0) + max_tokens: int | None = Field(None, ge=0) + top_k: int | None = Field(None, ge=0) + top_p: float | None = Field(None, ge=0.0, le=1.0) + class SearchSpaceBase(BaseModel): name: str description: str | None = None + inference_params: InferenceParams | None = None class SearchSpaceCreate(SearchSpaceBase): @@ -16,7 +23,9 @@ class SearchSpaceCreate(SearchSpaceBase): class SearchSpaceUpdate(SearchSpaceBase): - pass + name: str | None = None + description: str | None = None + inference_params: InferenceParams | None = None class SearchSpaceRead(SearchSpaceBase, IDModel, TimestampModel):