{"data":{"slug":"curiosity-ai-catalyst","name":"catalyst","tagline":"C# NLP library for fast pre-trained models and embeddings training","github_url":"https://github.com/curiosity-ai/catalyst","owner":"curiosity-ai","repo":"catalyst","owner_avatar_url":"https://avatars.githubusercontent.com/u/26607183?v=4","primary_language":"C#","stars":858,"forks":86,"topics":["ai","artificial-intelligence","csharp","embeddings","machine-learning","natural-language-processing","natural-language-understanding","nlp"],"archived":false,"github_pushed_at":"2026-08-07T14:08:19+00:00","maintenance_label":"Active","stars_delta_30d":4,"url":"https://www.graphcanon.com/tools/curiosity-ai-catalyst","markdown_url":"https://www.graphcanon.com/tools/curiosity-ai-catalyst.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/curiosity-ai-catalyst","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=curiosity-ai-catalyst","description":"🚀 Catalyst is a C# Natural Language Processing library built for speed. Inspired by spaCy's design, it brings pre-trained models, out-of-the box support for training word and document embeddings, and flexible entity recognition models.","homepage_url":null,"license":"MIT","open_issues":50,"watchers":38,"ai_summary":"Catalyst is an NLP library in C#, offering pre-trained models, embeddings training support, and entity recognition.","readme_excerpt":"## ✨ Getting Started\n\nUsing _**catalyst**_ is as simple as installing its [NuGet Package](https://www.nuget.org/packages/Catalyst), and setting the storage to use our online repository. This way, models will be lazy loaded either from disk or downloaded from our online repository. **Check out also some of the [sample projects](https://github.com/curiosity-ai/catalyst/tree/master/samples)** for more examples on how to use _**catalyst**_.\n\n\n```csharp\nCatalyst.Models.English.Register(); //You need to pre-register each language (and install the respective NuGet Packages)\n\nStorage.Current = new DiskStorage(\"catalyst-models\");\nvar nlp = await Pipeline.ForAsync(Language.English);\nvar doc = new Document(\"The quick brown fox jumps over the lazy dog\", Language.English);\nnlp.ProcessSingle(doc);\nConsole.WriteLine(doc.ToJson());\n```\n\nYou can also take advantage of C# lazy evaluation and native multi-threading support to process a large number of documents in parallel:\n\n```csharp\nvar docs = GetDocuments();\nvar parsed = nlp.Process(docs);\nDoSomething(parsed);\n\nIEnumerable<IDocument> GetDocuments()\n{\n    //Generates a few documents, to demonstrate multi-threading & lazy evaluation\n    for(int i = 0; i < 1000; i++)\n    {\n        yield return new Document(\"The quick brown fox jumps over the lazy dog\", Language.English);\n    }\n}\n\nvoid DoSomething(IEnumerable<IDocument> docs)\n{\n    foreach(var doc in docs)\n    {\n        Console.WriteLine(doc.ToJson());\n    }\n}\n```\n\nTraining a new [FastText](https://fasttext.cc/) [word2vec](https://en.wikipedia.org/wiki/Word2vec) embedding model is as simple as this:\n\n```csharp\nvar nlp = await Pipeline.ForAsync(Language.English);\nvar ft = new FastText(Language.English, 0, \"wiki-word2vec\");\nft.Data.Type = FastText.ModelType.CBow;\nft.Data.Loss = FastText.LossType.NegativeSampling;\nft.Train(nlp.Process(GetDocs()));\nft.StoreAsync();\n```\n\nFor fast embedding search, we have also released a C# version of the [\"Hierarchical Navigable Small World\" (HNSW)](https://arxiv.org/abs/1603.09320) algorithm on [NuGet](https://www.nuget.org/packages/HNSW/), based on our fork of Microsoft's [HNSW.Net](https://github.com/curiosity-ai/hnsw.net). We have also released a C# version of the \"Uniform Manifold Approximation and Projection\" ([UMAP](https://umap-learn.readthedocs.io/en/latest/how_umap_works.html)) algorithm for dimensionality reduction on [GitHub](https://github.com/curiosity-ai/umap-csharp) and on [NuGet](https://www.nuget.org/packages/UMAP/).","github_created_at":"2019-08-04T09:00:12+00:00","created_at":"2026-07-11T11:32:06.033352+00:00","updated_at":"2026-08-22T18:02:10.43891+00:00","categories":[{"slug":"ai-agents","name":"AI Agents","url":"https://www.graphcanon.com/categories/ai-agents","markdown_url":"https://www.graphcanon.com/categories/ai-agents.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/ai-agents"},{"slug":"model-training","name":"Model Training","url":"https://www.graphcanon.com/categories/model-training","markdown_url":"https://www.graphcanon.com/categories/model-training.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/model-training"}],"tags":[{"slug":"ai","name":"ai"},{"slug":"artificial-intelligence","name":"artificial-intelligence"},{"slug":"csharp","name":"csharp"},{"slug":"embeddings","name":"embeddings"},{"slug":"machine-learning","name":"machine-learning"},{"slug":"natural-language-processing","name":"natural-language-processing"},{"slug":"nlp","name":"nlp"}],"trust":{"provenance":{"is_fork":false,"github_id":200471228,"owner_type":"Organization","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-08-22T18:02:09.634Z","maintenance":{"label":"Active","score":82,"methodology":"github_public_v1","releases_90d":0,"days_since_push":15,"last_release_at":null,"stars_delta_30d":4,"open_issues_delta_30d":1},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-11T11:32:07.198Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-08-22T18:02:10.163Z"},"languages":{"value":["c#"],"source":"github.language","observed_at":"2026-08-22T18:02:10.163Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-08-22T18:02:10.163Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["When your project is primarily in C# or you are deeply embedded within the .NET ecosystem, providing a seamless integration experience.","If speed optimization for NLP tasks like embeddings training is critical due to performance constraints and you prefer tools inspired by spaCy's design."],"when_not_to_use":["When your preferred development language is not C#, as Catalyst may require additional setup or effort compared to libraries native in other languages.","If extensive customization of NLP models beyond embeddings training and entity recognition is required, since Catalyst might offer fewer advanced features than more mature tools."],"source":"enrich:decision_facts","observed_at":"2026-07-17T13:18:56.609Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"Catalyst provides fast NLP functionalities in C#, including pre-trained models and embedding training capabilities similar to spaCy but with .NET ecosystem integration."}]}}