技术速递|使用 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

微信

相关内容

商汤科技开源多模态模型Se...
IT之家 8 月 3 日消息,商汤科技今日宣布,面向社区开源轻量级...
2026-08-03 20:01:37
MiniMax开源H3,视...
长期封闭的视频模型赛道,出现了一个开源旗舰。 7月31日,Mini...
2026-08-03 19:59:29
100%开源!吴恩达做了个...
文婷 发自 凹非寺 量子位 | 公众号 QbitAI AI教育大佬...
2026-07-25 22:49:08
当「变大」不再是唯一的路,...
编辑|Panda 2026 年 6 月,智谱开源 GLM-5.2。...
2026-07-24 20:41:26

热门资讯

开源证券:维持陆家嘴“买入”评... 开源 证券研报指出, 陆家嘴中期业绩大幅增长,租赁现金流入稳中有增。公司2026H1实现归母净利润1...
韩国启动全民AI成长阶梯项目,... 2026年8月3日,韩国科学技术信息通信部正式启动全民AI成长阶梯项目,项目整合全民AI学习馆、全民...
从全民AI入门到创业孵化,韩国... 8月3日,财闻海外资讯消息,韩国科学技术信息通信部正式启动全民AI成长阶梯项目,整合全民AI学习馆、...
AI赋能包 | 产品介绍⑪——... 产品介绍 短视频AI剪辑与碰一碰批量发布系统是一套面向企业短视频矩阵营销的“AI剪辑+碰一碰发布”系...
PandaAI李昱琦:AI交易... 上证报中国证券网讯(记者 胡尧)8月1日,在上海虹口举行的PandaAI第三届因子大赛颁奖典礼暨AI...
真人短剧被AI“抢饭碗”?从业... “去年下半年AI短剧开始兴起,过完年真人短剧行情跌到谷底。真人短剧拍摄量锐减,大量专门承接平台真人剧...
Genspark 发布 Gen... 用 Al-Native 的方式,打造一款新时代的 Office。 8 月 3 日,在 AGI Pla...
原生统一多模态进阶!Sense... 今年4月,商汤科技发布了SenseNova U1,首次完整展示了基于NEO-Unify架构的原生统一...
开放通用智能,MiniMax ... 8月3日,据MiniMax消息,MiniMax正式开源新一代通用视频模型MiniMax H3。据介绍...
商汤科技开源多模态模型Sens... IT之家 8 月 3 日消息,商汤科技今日宣布,面向社区开源轻量级统一多模态模型的预览版本 Sens...