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

微信

相关内容

刚刚,直线崩了!“一字断魂...
【导读】东方甄选创新高之后,直线跳水,从涨超20%到跌20%! 中...
2025-08-20 15:45:50
特朗普缓禁TikTok,字...
去年,美国多数议员以中国科技巨头字节跳动威胁国家安全为由,推动立法...
2025-08-20 15:45:37
DeepSeek开源新模型...
IT之家 8 月 20 日消息,DeepSeek 昨天深夜在 Hu...
2025-08-20 09:44:29
重磅!华为发布突破性技术—...
华为在2025金融AI推理应用落地与发展论坛上,正式发布了一项AI...
2025-08-20 06:43:38
“区域AI枢纽”与“广西桥...
原标题:在新加坡AI现场@广西 “区域AI枢纽”与“广西桥头堡”的...
2025-08-19 23:13:59
大模型再降价 AI+应用或...
中证网讯 近期,OpenAI正式发布GPT-5,其API价格体系成...
2025-08-18 20:18:52

热门资讯

原创 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手机...