技术速递|使用 Chroma 构建 .NET AI 应用
创始人
2025-03-12 20:42:04
0

Chroma 网站

https://trychroma.com/

开始在您的应用程序中使用 Chroma

在本示例中,我们将使用 ChromaDB.Client包连接到 Chroma 数据库并使用向量搜索来搜索电影。

最简单的启动方式是本地使用 Chroma Docker 映像。您也可以在 Azure 中部署实例

注意:ChromaDB.Client是一个由社区支持的开源库。

ChromaDB.Client

https://www.nuget.org/packages/ChromaDB.Client

Chroma Docker 映像

https://docs.trychroma.com/production/containers/docker

在 Azure 中部署实例

https://docs.trychroma.com/production/cloud-providers/azure

ChromaDB.Client

https://www.nuget.org/packages/ChromaDB.Client

开源

https://github.com/ssone95/ChromaDB.Client

连接数据库

  1. 创建 C# 控制台应用程序

  2. 安装 ChromaDB.Client NuGet 包

  3. 创建带有配置选项的 ChromaClient

usingChromaDB.Client;

varconfigOptions = newChromaConfigurationOptions(uri: "http://localhost:8000/api/v1/");usingvarhttpClient = newHttpClient;varclient = newChromaClient(configOptions, httpClient);

使用托管版本的 Chroma 时,请将 uri替换为您的托管端点。

创建集合

现在您有了客户端,请创建一个集合来存储电影数据。

varcollection = awaitclient.GetOrCreateCollection("movies");

要对该集合执行操作,您需要创建一个集合客户端。

varcollectionClient = newChromaCollectionClient(collection, configOptions, httpClient);

向集合中添加数据

创建集合后,就可以向其中添加数据了。我们存储的数据包括:

  1. 电影 ID

  2. 用于表示电影描述的嵌入向量。

  3. 包含电影标题的元数据

ID

标题

嵌入向量

电影描述

1

狮子王

[0.10022575, -0.23998135]

《狮子王》是一部经典的迪士尼动画电影,讲述了一只名叫辛巴的小狮子,在父亲不幸去世后踏上旅程,最终夺回荣耀大地王位的故事。

2

盗梦空间

[0.10327095, 0.2563685]

《盗梦空间》是一部由克里斯托弗·诺兰执导的烧脑科幻电影。影片讲述了多姆·柯布的故事,他是一名擅长进入他人梦境窃取机密的高手。然而,他接到了一个终极任务,需要在目标人物的潜意识中植入一个想法。

3

玩具总动员

[0.095857024, -0.201278]

《玩具总动员》是皮克斯制作的一部开创性动画电影。影片讲述了当主人安迪不在时,玩具们的秘密生活。胡迪和巴斯光年是这部感人故事的主角。

4

低俗小说

[0.106827796, 0.21676421]

《低俗小说》是昆汀·塔伦蒂诺执导的犯罪电影。它通过非线性叙事,将黑帮分子、职业杀手和其他丰富多彩的角色故事交织在一起,充满黑色幽默和暴力元素。

5

怪物史瑞克

[0.09568083, -0.21177962]

《怪物史瑞克》是一部动画喜剧电影,讲述了怪物史瑞克为了夺回自己的沼泽地,踏上旅程去解救被困在巨龙守护的高塔中的菲欧娜公主的冒险故事。

List<string> movieIds = ["1", "2", "3", "4", "5"];

Listfloat>> deionEmbeddings = [

new[] { 0.10022575f, -0.23998135f},new[] { 0.10327095f, 0.2563685f},new[] { 0.095857024f, -0.201278f},new[] { 0.106827796f, 0.21676421f},new[] { 0.09568083f, -0.21177962f},];

Liststring,object>> metadata = [new Dictionary { ["Title"] = "The Lion King"},newDictionary<string, object> { ["Title"] = "Inception"},newDictionary<string, object> { ["Title"] = "Toy Story"},newDictionary<string, object> { ["Title"] = "Pulp Fiction"},newDictionary<string, object> { ["Title"] = "Shrek"},];

awaitcollectionClient.Add(movieIds, deionEmbeddings, metadata);

搜索电影(使用向量搜索)

现在您的数据已存储在数据库中,您可以查询它。在本例中,我们使用向量搜索。

文本

嵌入向量

适合家庭观看的电影

[0.12217915, -0.034832448]

Listfloat>> queryEmbedding = [new([0.12217915f, -0.034832448f])];

varqueryResult = awaitcollectionClient.Query(queryEmbeddings: queryEmbedding,nResults: 2,include: ChromaQueryInclude.Metadatas | ChromaQueryInclude.Distances);

foreach(varresult inqueryResult){foreach(varitem inresult){Console.WriteLine($"Title: {(string)item.Metadata["Title"] ?? string.Empty}{(item.Distance)}");}}

结果应类似于以下输出。

Title: Toy Story 0.028396977

Title: Shrek 0.032012463

观看直播

观看 Jiří Činčura 的 2月26日 .NET 数据社区会议,了解有关如何使用 Chroma 和新 C# SDK 的更多信息。

2月26日 .NET 数据社区会议

https://www.youtube.com/watch?v=Nj0vYJ9HVGk

总结

这一最新功能增强了 .NET 中不断发展的 AI 生态系统。它为更简单地实现现有的语义内核连接器以及在您的 .NET 应用程序中无缝集成 Microsoft.Extensions.VectorDataMicrosoft.Extensions.AI等基础组件铺平了道路。

我们要感谢 @ssone95为该项目所做的工作和贡献。我们很高兴能继续与社区合作建立合作伙伴关系,使 .NET 开发人员能够构建 AI 应用程序。

要了解如何开始使用 Chroma 等数据库构建 AI 应用程序,请查看 .NET AI 文档

现在就试用 Chroma C# SDK 并提供反馈

Microsoft.Extensions.VectorData

https://devblogs.microsoft.com/dotnet/introducing-microsoft-extensions-vector-data/

Microsoft.Extensions.AI

https://devblogs.microsoft.com/dotnet/introducing-microsoft-extensions-ai-preview/

@ssone95

https://github.com/ssone95

.NET AI 文档

https://learn.microsoft.com/dotnet/ai/quickstarts/quickstart-ai-chat-with-data?tabs=azd&pivots=openai

提供反馈

https://github.com/ssone95/ChromaDB.Client

微信

相关内容

原创 ...
多模态大模型正在从“看得见”走向“看得懂、想得通”。 智谱正式发布...
2025-07-02 15:40:54
鸿日达新设集成科技公司,含...
人民财讯7月2日电,企查查APP显示,近日,鸿擎集成科技(昆山)有...
2025-07-02 14:12:36
9B“小”模型干了票“大”...
金磊 发自 凹非寺 量子位 | 公众号 QbitAI 如果一个视觉...
2025-07-02 13:41:42
盘古Pro MoE 72B...
近日,华为宣布开源盘古70亿参数的稠密模型和720亿参数的混合专家...
2025-07-02 09:13:12
瑞金医院联合华为开源Rui...
6月30日,在由上海交通大学医学院附属瑞金医院(以下简称瑞金医院)...
2025-07-01 22:41:43
华为仓颉编程语言首个 LT...
IT之家 7 月 1 日消息,华为仓颉编程语言首个 LTS 版本 ...
2025-07-01 21:12:49

热门资讯

原创 2... #春日生活好物种草季#近年来,笔记本电脑市场迎来技术爆发期,尤其在手机厂商跨界入局后,轻薄本在性能、...
AMD锐龙AI 9 HX 37... 2024年6月3日,AMD正式发布全新的锐龙AI 300系列处理器。该系列处理器一经发布就引发大家的...
骁龙本这么猛?联想YOGA A... 在人人都是自媒体的时代,一部手机可以解决出镜拍摄问题,而商务出差、大量码字、图像处理等需求用笔记本则...
5个AI模特生成软件推荐 当前AI模特生成软件市场提供了多样化的解决方案,以下是几款备受推崇的工具: 触站AI:强烈推荐!...
2023年CentOS与Ubu... CentOS与Ubuntu的市场格局与技术特性探讨 在服务器操作系统领域,CentOS与Ubuntu...
苹果macOS 15.1:允许... 苹果公司在其最新的macOS 15.1版本中,推出了一项引人注目的新功能——允许用户将Mac App...
原创 苹... 前言 IQUNIX在做好看的桌面产品上,一直都给我留下非常深刻的印象。而且早期和苹果产品的设计风格...
原创 华... 想在竞争残酷的市场中发力,必须要带来一些激进的卖点,但是随着功能特性的提升,硬件也必须要进行给力才可...
原创 华... 在2024年这个被誉为"AI元年"的关键时刻,随着生成式AI的流行,各家手机厂商都在积极备战AI手机...