SurfSense/surfsense_backend
DESKTOP-RTLN3BA\$punk 9ef2ddd15c
Some checks are pending
pre-commit / pre-commit (push) Waiting to run
refactor: Remove deprecated document_title parameter from generate_document_summary function
2025-08-18 20:56:53 -07:00
..
alembic Merge pull request #261 from CREDO23/feature-google-calendar-connector/allow-indexing-future-events 2025-08-17 15:11:38 -07:00
app refactor: Remove deprecated document_title parameter from generate_document_summary function 2025-08-18 20:56:53 -07:00
.dockerignore feat: Added Docker Support and missing dependencies. 2025-03-20 18:52:06 -07:00
.env.example update .env.example 2025-08-15 09:11:14 +02:00
.gitignore feat: Added Local TTS (Kokoro TTS) Support 2025-08-13 17:25:34 -07:00
.python-version feat: SurfSense v0.0.6 init 2025-03-14 18:53:14 -07:00
alembic.ini add github connector, add alembic for db migrations, fix bug updating connectors 2025-04-13 13:56:22 -07:00
Dockerfile feat: Added Local TTS (Kokoro TTS) Support 2025-08-13 17:25:34 -07:00
main.py Fixed all ruff lint and formatting errors 2025-07-24 14:43:48 -07:00
pyproject.toml feat: Added Local TTS (Kokoro TTS) Support 2025-08-13 17:25:34 -07:00
README.md chore: update README and refactor ConnectorService for improved document handling and error management 2025-04-27 20:39:17 -07:00
uv.lock feat: Added Local TTS (Kokoro TTS) Support 2025-08-13 17:25:34 -07:00

Surf Backend

Technology Stack Overview

This application is a modern AI-powered search and knowledge management platform built with the following technology stack:

Core Framework and Environment

  • Python 3.12+: The application requires Python 3.12 or newer
  • FastAPI: Modern, fast web framework for building APIs with Python
  • Uvicorn: ASGI server implementation, running the FastAPI application
  • PostgreSQL with pgvector: Database with vector search capabilities for similarity searches
  • SQLAlchemy: SQL toolkit and ORM (Object-Relational Mapping) for database interactions
  • FastAPI Users: Authentication and user management with JWT and OAuth support

Key Features and Components

Authentication and User Management

  • JWT-based authentication
  • OAuth integration (Google)
  • User registration, login, and password reset flows

Search and Retrieval System

  • Hybrid Search: Combines vector similarity and full-text search for optimal results using Reciprocal Rank Fusion (RRF)
  • Vector Embeddings: Document and text embeddings for semantic search
  • pgvector: PostgreSQL extension for efficient vector similarity operations
  • Chonkie: Advanced document chunking and embedding library
    • Uses AutoEmbeddings for flexible embedding model selection
    • LateChunker for optimized document chunking based on embedding model's max sequence length

AI and NLP Capabilities

  • LangChain: Framework for developing AI-powered applications
    • Used for document processing, research, and response generation
    • Integration with various LLM models through LiteLLM
    • Document conversion utilities for standardized processing
  • GPT Integration: Integration with LLM models through LiteLLM
    • Multiple LLM configurations for different use cases:
      • Fast LLM: Quick responses (default: gpt-4o-mini)
      • Smart LLM: More comprehensive analysis (default: gpt-4o-mini)
      • Strategic LLM: Complex reasoning (default: gpt-4o-mini)
      • Long Context LLM: For processing large documents (default: gemini-2.0-flash-thinking)
  • Rerankers with FlashRank: Advanced result ranking for improved search relevance
    • Configurable reranking models (default: ms-marco-MiniLM-L-12-v2)
    • Supports multiple reranking backends (FlashRank, Cohere, etc.)
    • Improves search result quality by reordering based on semantic relevance
  • GPT-Researcher: Advanced research capabilities
    • Multiple research modes (GENERAL, DEEP, DEEPER)
    • Customizable report formats with proper citations
    • Streaming research results for real-time updates

External Integrations

  • Slack Connector: Integration with Slack for data retrieval and notifications
  • Notion Connector: Integration with Notion for document retrieval
  • Search APIs: Integration with Tavily and Serper API for web search
  • Firecrawl: Web crawling and data extraction capabilities

Data Processing

  • Unstructured: Tools for processing unstructured data
  • Markdownify: Converting HTML to Markdown
  • Playwright: Web automation and scraping capabilities

Main Modules

  • Search Spaces: Isolated search environments for different contexts or projects
  • Documents: Storage and retrieval of various document types
  • Chunks: Document fragments for more precise retrieval
  • Chats: Conversation management with different depth levels (GENERAL, DEEP)
  • Podcasts: Audio content management with generation capabilities
  • Search Source Connectors: Integration with various data sources

Development Tools

  • Poetry: Python dependency management (indicated by pyproject.toml)
  • CORS support: Cross-Origin Resource Sharing enabled for API access
  • Environment Variables: Configuration through .env files

Database Schema

The application uses a relational database with the following main entities:

  • Users: Authentication and user management
  • SearchSpaces: Isolated search environments owned by users
  • Documents: Various document types with content and embeddings
  • Chunks: Smaller pieces of documents for granular retrieval
  • Chats: Conversation tracking with different depth levels
  • Podcasts: Audio content with generation capabilities
  • SearchSourceConnectors: External data source integrations

API Endpoints

The API is structured with the following main route groups:

  • /auth/*: Authentication endpoints (JWT, OAuth)
  • /users/*: User management
  • /api/v1/search-spaces/*: Search space management
  • /api/v1/documents/*: Document management
  • /api/v1/podcasts/*: Podcast functionality
  • /api/v1/chats/*: Chat and conversation endpoints
  • /api/v1/search-source-connectors/*: External data source management

Deployment

The application is configured to run with Uvicorn and can be deployed with:

python main.py

This will start the server on all interfaces (0.0.0.0) with info-level logging.

Requirements

See pyproject.toml for detailed dependency information. Key dependencies include:

  • asyncpg: Asynchronous PostgreSQL client
  • chonkie: Document chunking and embedding library
  • fastapi and related packages
  • fastapi-users: Authentication and user management
  • firecrawl-py: Web crawling capabilities
  • langchain components for AI workflows
  • litellm: LLM model integration
  • pgvector: Vector similarity search in PostgreSQL
  • rerankers with FlashRank: Advanced result ranking
  • Various AI and NLP libraries
  • Integration clients for Slack, Notion, etc.