Skip to content

AI Search Chat , Support DeepResearch, OpenAI/Anthropic/VertexAI/Gemini, SearXNG, Docker. AI对话式搜索引擎,支持DeepResearch, 支持OpenAI/Anthropic/VertexAI/Gemini接口、聚合搜索引擎SearXNG,支持Docker一键部署。

License

Notifications You must be signed in to change notification settings

sear-chat/SearChat

Repository files navigation

🔍 SearChat

AI-powered conversational search engine

Multi-model integration | Real-time conversational search | Deep Research support

Github Stars License Report a bug Ask a question

English | 中文 | 日本語


AI Search Chat Interface

🌟 Project Overview

SearChat is a modern AI-powered conversational search engine built with Turborepo monorepo architecture, integrating Node.js + Koa backend and Vue 3 + TypeScript frontend.

🎯 Key Features:

  • 🤖 Multi-model Support - Compatible with OpenAI, Anthropic, Gemini APIs
  • 🔍 Multiple Search Engines - Support for Bing, Google, SearXNG and more
  • 💬 Conversational Search - Multi-turn chat-based search experience
  • Chat History - Conversation history cached in browser (IndexedDB/LocalStorage)
  • 🧠 Deep Research Mode - Refactoring deep research functionality
  • 🔌 MCP Support - (TODO) Support for external MCP services
  • 🖼️ Image Search - (TODO) Support for image and video search
  • 📂 File Parsing - (TODO) Support for document upload and content extraction

✨ Core Features

🧠 Deep Research

  • Intelligent Research Mode - Deep research functionality
  • Iterative Exploration - Workflow orchestration based on LangChain + LangGraph
  • Comprehensive Report Generation - Automatically generate structured research reports

🤖 AI Model Support

Important

To achieve the best results, the model must support Tool Call (Function Calling).

  • OpenAI API compatible
  • Google Gemini API compatible
  • Anthropic API compatible
  • Google Vertex AI compatible

🔍 Multi-Search Engine Integration

  • SearXNG - Open source aggregated search, no API key required
  • Bing Search - Microsoft Bing web search API
  • Google Search - Google web search API
  • Tavily - Tavily web search API
  • Exa - Exa.ai web search API
  • Bocha - BochaAI web search API
  • ChatGLM Web Search - Zhipu AI free search plugin

🎨 Modern Interface Experience

  • Responsive Design - Perfect adaptation for desktop and mobile
  • Dark/Light Theme - Support for automatic system theme switching
  • Internationalization - Multi-language interface (i18n)
  • Real-time Streaming - Typewriter effect answer display
  • Contextual Conversation - Support for multi-turn dialogue and history

🔬 Deep Research Mode

Deep Research mode uses AI-driven iterative search and analysis to generate comprehensive and in-depth research reports on any topic.

📹 Feature Demo

Demo

📦 Standalone Usage

If you want to integrate Deep Research capabilities into your own Node.js project:

npm install deepsearcher

Documentation: DeepResearch NPM Package

🐳 Quick Deployment (Recommended Docker)

📋 Prerequisites

  • Install Docker and Docker Compose
  • Prepare AI model API keys (configure in model.json)
  • Optional: Configure search engine API keys (in docker-compose.yaml)
  • Ensure network access to required services (SearXNG needs Google access)

🚀 One-Click Deployment

1. Create docker-compose.yaml file

Please refer to the deploy/docker-compose.yaml file.

2. Configure Environment Variables

Edit the docker-compose.yaml file and modify the corresponding environment variables in the search_chat service:

services:
  search_chat:
    container_name: search_chat
    image: docker.cnb.cool/aigc/aisearch:v1.2.0-alpha
    environment:
      # Server Configuration
      - PORT=3000

      # Search Engine API Keys (configure as needed)
      - BING_SEARCH_KEY=your_bing_key
      - GOOGLE_SEARCH_KEY=your_google_key
      - GOOGLE_SEARCH_ID=your_google_cse_id
      - TAVILY_KEY=your_tavily_key
      - ZHIPU_KEY=your_zhipu_key
      - EXA_KEY=your_exa_key
      - BOCHA_KEY=your_bocha_key

      # Web Content Extraction (optional)
      - JINA_KEY=your_jina_key

      # SearXNG Configuration (included by default, ready to use)
      - SEARXNG_HOSTNAME=http://searxng:8080
      - SEARXNG_SAFE=0
      - SEARXNG_LANGUAGE=en
      - SEARXNG_ENGINES=bing,google
      - SEARXNG_IMAGES_ENGINES=bing,google

      # DeepResearch Configuration
      - DEEP_MAX_RESEARCH_LOOPS=3
      - DEEP_NUMBER_OF_INITIAL_QUERIES=3

      # Domain Whitelist (optional)
      - WHITELIST_DOMAINS=
    volumes:
      - ./model.json:/app/apps/server/dist/model.json
    ports:
      - "3000:3000"
    restart: always

3. Configure AI Models (Required)

Create and edit the model.json file in the same directory as docker-compose.yaml to configure AI models and API keys:

[
  {
    "provider": "openai",
    "type": "openai",
    "baseURL": "https://api.openai.com/v1",
    "apiKey": "sk-your-openai-api-key",
    "models": [
      {
        "name": "gpt-4o-mini",
        "alias": "GPT-4o Mini",
        "description": "OpenAI GPT-4o Mini model",
        "maxTokens": 262144,
        "intentAnalysis": true
      },
      {
        "name": "gpt-4o",
        "alias": "GPT-4o",
        "description": "OpenAI GPT-4o model",
        "maxTokens": 262144
      }
    ]
  },
  {
    "provider": "anthropic",
    "type": "anthropic",
    "baseURL": "https://api.anthropic.com/v1",
    "apiKey": "sk-your-anthropic-api-key",
    "models": [
      {
        "name": "claude-sonnet-4-5",
        "alias": "Claude Sonnet 4.5",
        "description": "Anthropic Claude Sonnet 4.5",
        "maxTokens": 131072
      }
    ]
  }
]

Models with intentAnalysis: true will be used for search intent analysis and query rewriting. It's recommended to set smaller models here to improve response speed.

Configuration Description:

  • provider: Model provider name
  • type: API type (openai/anthropic/google etc.)
  • baseURL: API base URL
  • apiKey: Your API key
  • models: Model list with name, alias, description and max tokens

4. Start Services

docker compose up -d

5. Access Application

Open your browser and visit: http://localhost:3000

🔄 Update Deployment

# Stop services
docker compose down

# Pull latest image
docker pull docker.cnb.cool/aigc/searchchat:latest

# Restart
docker compose up -d

🔍 Search Engine Configuration

The project supports multiple search engines. Choose the appropriate search source based on your needs. SearXNG is recommended.

🆓 SearXNG (Recommended - Free & Open Source)

Advantages: Completely free, no API key required, aggregates multiple search sources, protects privacy

SearXNG is an open-source metasearch engine that aggregates results from multiple search services without tracking users. Built into Docker deployment, ready to use out of the box.

Configuration Options:

  • SEARXNG_ENGINES: Set search engines (default: bing,google)
  • SEARXNG_LANGUAGE: Search language (zh=Chinese, en-US=English, all=all)
  • SEARXNG_SAFE: Safe search level (0=off, 1=moderate, 2=strict)

[!IMPORTANT]

Make sure to activate the json format to use the API. This can be done by adding the following line to the searxng/settings.yml file:

search:
    formats:
        - html
        - json

💻 Local Development

📋 Requirements

  • Node.js >= 20
  • Package Manager yarn@3.5.1
  • Build Tool Turborepo

🏗️ Project Architecture

search_with_ai/
├── apps/
│   ├── server/          # Backend service (Koa + TypeScript)
│   │   ├── src/
│   │   │   ├── app.ts           # Application entry
│   │   │   ├── controller.ts    # Route controllers
│   │   │   ├── interface.ts     # Type definitions
│   │   │   └── model.json       # Model configuration
│   │   └── package.json
│   └── web/             # Frontend application (Vue 3 + TypeScript)
│       ├── src/
│       │   ├── pages/           # Page components
│       │   ├── stores/          # Pinia state management
│       │   └── components/      # Common components
│       └── package.json
├── deploy/              # Deployment configuration
│   ├── docker-compose.yaml
│   ├── .env.docker
│   └── model.json
└── package.json         # Root configuration

🚀 Development Workflow

1. Install Dependencies

# Clone project
git clone https://github.com/sear-chat/SearChat.git
cd SearChat

# Install dependencies (run in root, will install all sub-project dependencies)
yarn install

2. Configure Environment

Copy and edit server environment configuration:

# Copy environment configuration template
cp apps/server/.env apps/server/.env.local

# Edit configuration file
vim apps/server/.env.local

3. Start Development Services

# Start both frontend and backend development servers
yarn dev

# Or use Turborepo command
turbo dev

Access URLs:

4. Build Production Version

# Build all applications
yarn build

# Or
turbo build

🔧 Development Tools

Backend Tech Stack

  • Framework: Koa.js + TypeScript
  • AI Integration: LangChain + LangGraph
  • Search Engines: Multi-engine adapter pattern

Frontend Tech Stack

  • Framework: Vue 3 + Composition API
  • Build: Vite + TypeScript
  • UI Library: TDesign Vue Next
  • State Management: Pinia + persistence
  • Styling: Tailwind CSS + Less

🤝 Contributing

Welcome to contribute to the project! Please follow these steps:

  1. Fork the project to your GitHub account
  2. Create a feature branch git checkout -b feature/amazing-feature
  3. Commit your changes git commit -m 'Add amazing feature'
  4. Push the branch git push origin feature/amazing-feature
  5. Create a Pull Request

🐛 Issue Reporting

📄 License

This project is licensed under the MIT License.

🙏 Acknowledgments


⭐ If this project helps you, please give it a Star!

🚀 Back to top

About

AI Search Chat , Support DeepResearch, OpenAI/Anthropic/VertexAI/Gemini, SearXNG, Docker. AI对话式搜索引擎,支持DeepResearch, 支持OpenAI/Anthropic/VertexAI/Gemini接口、聚合搜索引擎SearXNG,支持Docker一键部署。

Topics

Resources

License

Stars

Watchers

Forks

Contributors 15