65.9K
CodeProject 正在变化。 阅读更多。
Home

在 .NET 应用中释放 OpenAI 文本嵌入的力量

starIconstarIconstarIconstarIconstarIcon

5.00/5 (5投票s)

2023年10月17日

CPOL

2分钟阅读

viewsIcon

11936

轻松集成和利用 OpenAI 的文本嵌入,以增强您 .NET 项目中的文本分析。

引言

在自然语言处理领域,嵌入 (Embeddings) 提供了一种强大的方法来量化文本字符串的相关性。 OpenAI 的文本嵌入,如前一篇文章 所述,为需要搜索、聚类和分类功能的应用程序带来了巨大的能力。 ConnectingApps.Refit.OpenAI NuGet 页面,如本文所示,进一步简化了此功能集成到 .NET 应用程序中。

背景

那么,文本嵌入到底是什么? 可以将其视为一种将单词或句子转换为数值向量,同时保留其含义的方法。 如果两段文本含义相似,则它们在多维空间中的向量将更接近。 为了更具体地说明,考虑一个音乐流媒体服务,旨在根据歌词推荐歌曲。 通过利用嵌入,该服务可以分析您最喜欢的歌曲背后的含义,并推荐具有类似主题内容的其他歌曲。 深入一点,假设您经常听关于“克服挑战”的歌曲。 即使新歌不使用完全相同的短语“克服挑战”,只要它们传达了相似的情感,就会向您推荐。 文本嵌入使这种魔力成为可能。 要深入了解,官方 OpenAI 文档 提供了关于嵌入及其机制的宝贵见解。

使用代码

ConnectingApps.Refit.OpenAI NuGet 包提供了一个无缝的接口来利用 OpenAI 的 API。 要使用此包中的文本嵌入

1. 从其指定的 NuGet 页面 获取该包。

2. 从 OpenAI 获取必要的 API 密钥,并将其设置为环境变量。

3. 如 NuGet 包的 GitHub 仓库 中的代码示例所示,与 OpenAI 的嵌入端点集成。

using ConnectingApps.Refit.OpenAI;
using ConnectingApps.Refit.OpenAI.Embeddings;
using ConnectingApps.Refit.OpenAI.Embeddings.Request;
using Refit;

var apiKey = Environment.GetEnvironmentVariable("OPENAI_KEY");
var completionApi = RestService.For<IEmbedding>(new HttpClient
{
    BaseAddress = new Uri("https://api.openai.com")
}, OpenAiRefitSettings.RefitSettings);

var response = await completionApi.GetEmbeddingAsync(new EmbeddingRequest
    {
        Input = "The food was delicious",
        Model = "text-embedding-ada-002"
}, $"Bearer {apiKey}");

Console.WriteLine($"Returned response status code {response.StatusCode}");
Console.WriteLine($"Vector length {response.Content!.Data.First().Embedding.Length}");
Console.WriteLine($"Vector {string.Join(", ", response.Content!.Data.First().Embedding.Take(10))}...");

执行代码后,您将收到类似于以下内容的输出

Returned response status code OK
Vector length 1536
Vector 0,022599462, -0,0008510616, -0,005139073, -0,010128645, -0,0023203692, 0,0057370737, -0,01077648, -0,03453457, 0,008851663, -0,044576004...

此输出表示输入文本“The food was delicious”(食物很好吃)被转换为长度为 1536 的嵌入向量。 打印的向量值只是整个输出的片段,展示了如何以数值方式表示输入文本的情感和含义。

关注点

ConnectingApps.Refit.OpenAI 包的探索表明,将 OpenAI 的能力与 .NET 的优势相结合具有巨大的力量。 通过抽象复杂性,此 NuGet 包使获取嵌入就像调用一个常规函数一样简单。 这种卓越的集成证明了人工智能技术正变得越来越容易被不同平台的开发人员所访问。

历史

2023 年 10 月 19 日:修订文章,重点关注使用 ConnectingApps.Refit.OpenAI 包在 .NET 中应用嵌入。 对于那些寻求全面概述的人,详细的 文章 将更深入地探讨此包的功能和优势。

© . All rights reserved.