Tự host

Sifthound cung cấp giải pháp thay thế API tìm kiếm Tavily có thể tự host và tích hợp ngay

Người dùng GitHub khsarvar đã phát hành Sifthound, một lựa chọn mã nguồn mở thay thế cho Tavily, chạy trên hạ tầng riêng của bạn bằng cách sử dụng SearXNG và hỗ trợ MCP.

Minh họa một máy chủ tìm kiếm tự host kết nối với workstation của nhà phát triển
Ảnh minh họa tạo riêng cho bài viết

Bài được dịch tự động từ bản gốc tiếng Anh.

Vào ngày 25 tháng 9 năm 2026, người dùng GitHub khsarvar đã công bố Sifthound, một dự án mã nguồn mở được thiết kế để làm giải pháp thay thế tự host cho API tìm kiếm web Tavily. Bản phát hành này nhắm đến các đội ngũ phát triển xây dựng tác nhân AI (AI agents) và ứng dụng mô hình ngôn ngữ lớn (LLM), những người ưu tiên quản lý hạ tầng riêng thay vì phụ thuộc vào các nhà cung cấp phần mềm dưới dạng dịch vụ (SaaS) bên ngoài. Công cụ này tái tạo chức năng cốt lõi của Tavily nhưng hoạt động hoàn toàn trên máy chủ cục bộ hoặc riêng tư.

Điều gì đã xảy ra

Sifthound được xây dựng để mô phỏng cấu trúc API của Tavily, cung cấp các endpoint cho tìm kiếm, trích xuất nội dung, thu thập dữ liệu (crawling) và lập bản đồ trang web. Bằng cách khớp với định dạng yêu cầu và phản hồi của dịch vụ gốc, nó cho phép các nhà phát triển chuyển từ nền tảng Tavily được host sẵn sang instance riêng của họ với những thay đổi mã tối thiểu. Dự án dựa vào SearXNG, một công cụ siêu tìm kiếm tôn trọng quyền riêng tư, để thu thập kết quả từ các nhà cung cấp tìm kiếm công khai như DuckDuckGo và Brave. Đối với xử lý nội dung, nó sử dụng trafilatura để trích xuất văn bản sạch và markdown từ các trang web, cùng với thuật toán BM25 để xếp hạng mức độ liên quan thay vì sử dụng reranking bằng mạng nơ-ron.

Bản phát hành bao gồm hỗ trợ cho Model Context Protocol (MCP), cho phép tích hợp trực tiếp với các trợ lý lập trình AI như Claude Desktop và Cursor. Các nhà phát triển có thể chạy Sifthound thông qua Docker Compose, vốn đóng gói sẵn instance SearXNG cần thiết, hoặc cài đặt trực tiếp bằng pip. Dự án được cấp phép theo MIT License, cho phép sử dụng và chỉnh sửa miễn phí, mặc dù tên gọi được bảo vệ bởi chính sách thương hiệu riêng, yêu cầu các phiên bản fork phải sử dụng thương hiệu khác.

Chi tiết chính

  • Tương thích drop-in: API chấp nhận các tham số giống hệt Tavily cho các endpoint /search, /extract, /crawl và /map, hoạt động với SDK Python chính thức và tích hợp LangChain chỉ bằng cách thay đổi base URL.
  • Không cần khóa API tìm kiếm: Các truy vấn tìm kiếm được định tuyến qua SearXNG, loại bỏ nhu cầu về khóa API riêng lẻ từ các công cụ tìm kiếm, mặc dù khóa Anthropic là tùy chọn để tạo câu trả lời trực tiếp.
  • Biện pháp bảo mật: Hệ thống chặn các yêu cầu tới địa chỉ riêng tư, loopback và link-local để ngăn chặn giả mạo yêu cầu phía máy chủ (SSRF), bao gồm cả kiểm tra chống lại tấn công DNS rebinding trong quá trình chuyển hướng.
  • Hỗ trợ MCP: Nó phơi bày một máy chủ MCP qua HTTP tại /mcp và hỗ trợ thực thi stdio cho các client cục bộ, cho phép các tác nhân AI sử dụng công cụ tìm kiếm trực tiếp trong quy trình làm việc của chúng.
  • Khác biệt về xếp hạng: Điểm mức độ liên quan được tính toán bằng cách pha trộn BM25 thay vì bộ reranker thần kinh của Tavily, và các tính năng như include_image_descriptions được chấp nhận nhưng hiện đang bị bỏ qua.
  • Xử lý lỗi: Nếu tất cả các công cụ tìm kiếm upstream giới hạn tốc độ hoặc CAPTCHA IP máy chủ, Sifthound sẽ trả về lỗi 502 kèm lý do cụ thể thay vì tập kết quả trống, giúp các tác nhân phân biệt giữa không có kết quả và sự cố tạm thời.

Bối cảnh

Tavily đã trở thành một lựa chọn phổ biến cho các nhà phát triển AI vì nó đơn giản hóa nhiệm vụ phức tạp là lấy dữ liệu web thời gian thực cho các mô hình ngôn ngữ lớn. Thông thường, một tác nhân sẽ cần truy vấn nhiều công cụ tìm kiếm, phân tích HTML lộn xộn, loại bỏ quảng cáo và các yếu tố điều hướng, rồi xếp hạng kết quả theo mức độ liên quan. Tavily xử lý quy trình này như một dịch vụ được quản lý. Tuy nhiên, việc phụ thuộc vào API của bên thứ ba gây ra các phụ thuộc vào uptime bên ngoài, mô hình giá cả và chính sách bảo mật dữ liệu. Các giải pháp tự host nhằm mục đích trao cho các đội ngũ quyền kiểm soát quy trình dữ liệu này, giữ nhật ký truy vấn nhạy cảm ở nội bộ và tránh chi phí theo từng yêu cầu.

SearXNG đóng vai trò là xương sống cho khả năng tìm kiếm của Sifthound. Đây là một công cụ siêu tìm kiếm mã nguồn mở tổng hợp kết quả từ nhiều nhà cung cấp khác nhau mà không theo dõi người dùng. Bằng cách kết hợp SearXNG với các công cụ trích xuất như trafilatura, Sifthound tái tạo giá trị cốt lõi của Tavily: cung cấp dữ liệu sạch, có cấu trúc cho các mô hình AI. Việc bao gồm hỗ trợ MCP phản ánh xu hướng ngày càng tăng trong phát triển AI, nơi các công cụ được tiêu chuẩn hóa để cho phép tương tác liền mạch giữa các client AI khác nhau và tài nguyên cục bộ.

Tại sao điều này quan trọng

Đối với các đội ngũ vận hành phần mềm riêng, việc kiểm soát lớp tìm kiếm của một tác nhân AI giảm thiểu rủi ro vận hành và chi phí. Khi bạn tự host Sifthound, bạn không chịu ảnh hưởng bởi giới hạn tốc độ hay sự tăng giá của một nhà cung cấp API thương mại. Điều này đặc biệt quan trọng đối với các ứng dụng thực hiện khối lượng tìm kiếm lớn, nơi phí theo mỗi cuộc gọi có thể tích lũy nhanh chóng. Ngoài ra, việc giữ các truy vấn tìm kiếm on-premise đảm bảo rằng nghiên cứu độc quyền hoặc tham chiếu dữ liệu nội bộ không rời khỏi mạng của bạn, đáp ứng các yêu cầu tuân thủ của nhiều doanh nghiệp.

Tính chất drop-in của API có nghĩa là các đội ngũ kỹ thuật không cần phải refactor các codebase hiện có để hưởng lợi từ việc tự host. Nếu một dự án đã sử dụng langchain-tavily hoặc client Python chính thức của Tavily, việc chuyển sang Sifthound chỉ đòi hỏi một thay đổi cấu hình. Điều này hạ thấp rào cản gia nhập cho các tổ chức muốn thoát khỏi phụ thuộc SaaS mà không phải gánh chịu nợ kỹ thuật đáng kể. Nó cũng cung cấp một phương án dự phòng nếu các dịch vụ bên ngoài gặp sự cố gián đoạn, đảm bảo tính liên tục kinh doanh cho các quy trình AI quan trọng.

Tuy nhiên, việc tự host đi kèm với những đánh đổi. Sifthound không cung cấp khả năng render JavaScript, nghĩa là nó không thể trích xuất nội dung từ các ứng dụng một trang (SPA) phụ thuộc nhiều vào script phía client. Các đội ngũ cần tính năng này vẫn có thể phải yêu cầu các công cụ như Firecrawl. Hơn nữa, vì nó dựa vào các công cụ tìm kiếm công khai thông qua SearXNG, nó dễ mắc phải các vấn đề CAPTCHA và giới hạn tốc độ tương tự như bất kỳ scraper tự động nào. Hiểu rõ những hạn chế này giúp các đội ngũ quyết định xem sự đánh đổi giữa kiểm soát và tiện lợi có phù hợp với trường hợp sử dụng cụ thể của họ hay không.

Những gì bạn có thể làm

  • Thử nghiệm API cục bộ: Clone repository và chạy docker compose up để khởi động một instance cục bộ, sau đó sử dụng curl hoặc SDK Python để xác minh khả năng tìm kiếm và trích xuất so với quy trình làm việc hiện tại của bạn.
  • Cấu hình khóa API: Đặt biến môi trường API_KEYS để hạn chế quyền truy cập vào instance Sifthound của bạn, đảm bảo rằng chỉ các ứng dụng được ủy quyền mới có thể kích hoạt các thao tác tìm kiếm hoặc crawl.
  • Điều chỉnh cài đặt SearXNG: Chỉnh sửa tệp docker/searxng/settings.yml để bật thêm các công cụ tìm kiếm, điều này giúp giảm thiểu các vấn đề giới hạn tốc độ khi một nhà cung cấp tạm thời chặn địa chỉ IP của bạn.
  • Tích hợp với client MCP: Thêm Sifthound vào cấu hình Claude Desktop hoặc Cursor của bạn bằng cách sử dụng đoạn JSON được cung cấp để bật tìm kiếm bằng ngôn ngữ tự nhiên trực tiếp trong môi trường lập trình của bạn.
  • Giám sát nhật ký lỗi: Theo dõi các lỗi 502 chỉ ra các engine thất bại, và triển khai logic thử lại trong ứng dụng của bạn để xử lý một cách duyên dáng các block tạm thời từ các nhà cung cấp tìm kiếm upstream.
  • Đánh giá nhu cầu render: Đánh giá xem các trang web mục tiêu của bạn có yêu cầu render JavaScript hay không; nếu có, hãy lên kế hoạch tích hợp một dịch vụ render riêng biệt song song với Sifthound cho các domain cụ thể đó.

Tin khác

Tất cả tin