{"id":47692746,"url":"https://github.com/amgix/amgix-server","last_synced_at":"2026-06-14T20:01:32.160Z","repository":{"id":346027328,"uuid":"1176013957","full_name":"amgix/amgix-server","owner":"amgix","description":"Amalgam Index (Amgix) is a modular distributed hybrid search system","archived":false,"fork":false,"pushed_at":"2026-06-14T13:50:19.000Z","size":722,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-14T15:26:26.010Z","etag":null,"topics":["api","backend","distributed-systems","hybrid-search","information-retrieval","keyword-search","mariadb","microservices","postgresql","qdrant","ranking","retrieval","search","search-engine","self-hosted","semantic-search","vector-search"],"latest_commit_sha":null,"homepage":"https://amgix.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amgix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":"CLA.md"}},"created_at":"2026-03-08T13:56:13.000Z","updated_at":"2026-06-14T13:50:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/amgix/amgix-server","commit_stats":null,"previous_names":["amgix/amgix-server"],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/amgix/amgix-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amgix%2Famgix-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amgix%2Famgix-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amgix%2Famgix-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amgix%2Famgix-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amgix","download_url":"https://codeload.github.com/amgix/amgix-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amgix%2Famgix-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34335688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","backend","distributed-systems","hybrid-search","information-retrieval","keyword-search","mariadb","microservices","postgresql","qdrant","ranking","retrieval","search","search-engine","self-hosted","semantic-search","vector-search"],"created_at":"2026-04-02T15:52:19.249Z","updated_at":"2026-06-14T20:01:32.010Z","avatar_url":"https://github.com/amgix.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Amgix** - Open-Source Hybrid Search System\n\n\u003cimg src=\"https://amgix.io/images/cluster-map.png\" align=\"right\" width=\"250\" hspace=\"10\"/\u003e\n\n\u003e **Amgix** (pronounced `a-MAG-ix`) - short for Amalgam Index  \n\u003e *amalgam: a mixture or blend of different elements*\n\n**Amgix is an open-source system that handles ingestion, embedding, and hybrid retrieval behind one REST API.** You do not need to stitch together queues, a vector database, and ranking or fusion logic in your application.\n\n\u003cbr clear=\"right\"\u003e\n\n## How It Works\n\n**0. Run Amgix One:**  \nAmgix One packs the API, encoders, RabbitMQ, and Qdrant into one container — the easiest way to try Amgix or run it with modest requirements.\n\n```bash\ndocker run -d -p 8234:8234 -v \u003cpath/on/host\u003e:/data amgixio/amgix-one:1\n```\nThis persists data and caches Hugging Face models under `/data`.\n\nUse the short tag `1` for the latest 1.x release, or a specific version from [Releases](https://github.com/amgix/amgix-server/releases) (e.g. `amgixio/amgix-one:v1.0.0`). For GPU support use `amgixio/amgix-one:1-gpu` (requires NVIDIA Container Toolkit).\n\n**1. Define your collection:**\n```json\nPOST /v1/collections/products\n{\n  \"vectors\": [\n    {\"name\": \"keyword\", \"type\": \"keyword\", \"index_fields\": [\"name\", \"content\"]},\n    {\"name\": \"semantic\", \"type\": \"dense_model\", \"model\": \"sentence-transformers/all-MiniLM-L6-v2\", \"index_fields\": [\"content\"]}\n  ]\n}\n```\n\n**2. Upload your data:**\n```json\nPOST /v1/collections/products/documents/bulk\n{\n  \"documents\": [\n    {\n      \"id\": \"part-001\",\n      \"timestamp\": \"2026-03-15T00:00:00Z\",\n      \"name\": \"Roller 12LP'-x03/5-XL\",\n      \"content\": \"Precision pinch roller assembly for manufacturing.\"\n    },\n    {\n      \"id\": \"part-002\",\n      \"timestamp\": \"2026-03-15T00:00:00Z\",\n      \"name\": \"Bearing 12LP'-y03/5-XL\",\n      \"content\": \"Deep groove ball bearing, double shielded.\"\n    },\n    {\n      \"id\": \"part-003\",\n      \"timestamp\": \"2026-03-15T00:00:00Z\",\n      \"name\": \"Belt 12LP'-x03/8-MD\",\n      \"content\": \"Synchronous timing belt for power transmission.\"\n    }\n  ]\n}\n```\n\n**3. Search:**\n```json\nPOST /v1/collections/products/search\n{\n  \"query\": \"12lpy03\"\n}\n```\n*Amgix's built-in keyword tokenizer handles missing punctuation to correctly return the Bearing (`12LP'-y03/5-XL`).*\n\n```json\nPOST /v1/collections/products/search\n{\n  \"query\": \"motor energy transfer loop\"\n}\n```\n*Even without keyword overlap, Amgix's semantic vector understands the concept and returns the Belt (`Synchronous timing belt for power transmission`).*\n\n---\n\n## Why Amgix\n\nBecause integrating modern search into applications is hard. You usually have to:\n\n1. Stitch together multiple systems for retrieval, embeddings, and indexing.\n2. Build indexing and re-indexing pipelines that handle deduplication and failures.\n3. Build and maintain embedding pipelines for semantic search.\n4. Combine keyword and semantic results into one ranking.\n5. Tune relevance for real queries, filters, typos, and identifier-heavy data.\n6. Keep the whole thing in sync, reliable, and scalable.\n\nAmgix was built to solve these headaches. Instead of stitching together your own infrastructure, you get a single unified stack with:\n\n- **Built-in ingestion queues:** Async processing with automatic retries and deduplication.\n- **Adaptive model orchestration:** Models load and rebalance across nodes automatically based on demand.\n- **Server-side fusion:** One API call handles query vectorization, semantic search, keyword search (including our custom tokenizer for messy identifier data), and ranking.\n- **Backend Agnostic:** Run on Postgres, MariaDB, or Qdrant without changing your code.\n\n---\n\nVisit [Documentation](https://docs.amgix.io/)\n\nClients: [Python](https://github.com/amgix/amgix-client-python/), [Typescript](https://github.com/amgix/amgix-client-typescript/)\n\nSite: [amgix.io](https://amgix.io/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famgix%2Famgix-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famgix%2Famgix-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famgix%2Famgix-server/lists"}