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

微信

相关内容

技术速递|使用 Chrom...
Chroma 网站 https://trychroma.com/ ...
2025-03-12 20:42:04
AI不是大企业专属游戏!蔡...
(图片来源:摄图网) 3月12日上午,阿里巴巴集团董事长蔡崇信在新...
2025-03-12 20:10:10
武汉上线双千亿参数政务级A...
3月7日,武汉首义科技创新投资发展集团有限公司、中国电信武汉分公司...
2025-03-12 18:14:05
三友医疗:正在探索AI智能...
金融界3月12日消息,有投资者在互动平台向三友医疗提问:董秘您好!...
2025-03-12 16:40:54
首篇AI自写论文通过ICL...
新智元报道 编辑:桃子 【新智元导读】Sakana AI刚刚官宣...
2025-03-12 16:14:45
阿里巴巴蔡崇信:未来的应用...
观点网讯:3月12日,阿里巴巴集团董事长蔡崇信在论坛表示,开源的力...
2025-03-12 15:40:53

热门资讯

原创 华... 想在竞争残酷的市场中发力,必须要带来一些激进的卖点,但是随着功能特性的提升,硬件也必须要进行给力才可...
支持 AI 扩图,华为 Pur... 2024-07-28 09:05:02作者:姚立伟 华为Pura 70 Pro手机今日推出鸿蒙Ha...
苹果macOS 15.1:允许... 苹果公司在其最新的macOS 15.1版本中,推出了一项引人注目的新功能——允许用户将Mac App...
吞噬星空维妮娜美图/高清壁纸/... 国漫女神|《吞噬星空》维妮娜美图/高清壁纸/AI手机壁纸/无水印 国漫女神|《吞噬星空》维妮娜美图...
原创 苹... 前言 IQUNIX在做好看的桌面产品上,一直都给我留下非常深刻的印象。而且早期和苹果产品的设计风格...
原创 商... 最近,各家的AI 9笔记本开始陆续登场,其实大家并不一定非选AI 9 HX 370,主要是这颗CPU...
AI智能+高效清洁!萤石RS2... 目前扫拖机器人市场的竞争非常激烈,在上下水扫拖一体机市场也出现了很多所谓的创新产品。但是对于这些产品...
2024年度中国银行业发展报告... 21世纪经济报道 记者李愿 北京报道 10月19日,中国银行业协会在2024金融街论坛年会·金融街之...