日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Kernel Memory 入门系列:快速开始

發(fā)布時(shí)間:2023/12/24 windows 29 coder
生活随笔 收集整理的這篇文章主要介紹了 Kernel Memory 入门系列:快速开始 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Kernel Memory 入門:Quick Start

了解了用戶問答和文檔預(yù)處理的流程之后,我們就可以直接開始使用Kernel Memory了。

1. 安裝

項(xiàng)目中只需要通過NuGet安裝Microsoft.KernelMemory.Core包即可。

dotnet add package Microsoft.KernelMemory.Core

2. 構(gòu)建

Kernel Memory的構(gòu)建過程非常簡(jiǎn)單,只需要調(diào)用KernelMemoryBuilderBuild方法即可。

var memory = new KernelMemoryBuilder()
                 .WithOpenAIDefaults(Env.Var("OPENAI_API_KEY"))
                 .Build<MemoryServerless>();

其中默認(rèn)需要配置LLM和Embedding服務(wù),如果使用OpenAI的服務(wù),可以只需要通過WithOpenAIDefaults方法傳入OpenAI的API Key即可。

默認(rèn)使用的是gpt-3.5-turbo-16k作為文本生成模型,使用text-embedding-ada-002作為Embedding模型。

如果想要自定義其他的模型的話,可以使用以下方式:

var memory = new KernelMemoryBuilder()
             .WithOpenAITextGeneration(new OpenAIConfig()
             {
                 APIKey = Env.Var("OPENAI_APIKEY"),
                 TextModel = "gpt-3.5-turbo"
             })
             .WithOpenAITextEmbeddingGeneration(new OpenAIConfig()
             {
                 APIKey = Env.Var("OPENAI_APIKEY"),
                 EmbeddingModel = "text-embedding-ada-002"
             })
             .Build<MemoryServerless>();

如果是使用的Azure OpenAI的話,通過以下方式配置:


var memory = new KernelMemoryBuilder()
             .WithAzureOpenAITextGeneration(new AzureOpenAIConfig(){
                 APIKey = Env.Var("AZURE_OPENAI_API_KEY"),
                 Auth = AzureOpenAIConfig.AuthTypes.APIKey,
                 Endpoint = Env.Var("AZURE_OPENAI_ENDPOINT"),APIType = AzureOpenAIConfig.APITypes.ChatCompletion,
                 Deployment = "gpt-35-turbo-16k"
             })
             .WithAzureOpenAITextEmbeddingGeneration(new AzureOpenAIConfig()
             {
                 APIKey = Env.Var("AZURE_OPENAI_API_KEY"),
                 Auth = AzureOpenAIConfig.AuthTypes.APIKey,
                 Endpoint = Env.Var("AZURE_OPENAI_ENDPOINT"),
                 APIType = AzureOpenAIConfig.APITypes.EmbeddingGeneration,
                 Deployment = "text-embedding-ada-002"
             })
             .Build<MemoryServerless>();

這里忽略了文件存儲(chǔ)、消息隊(duì)列、向量數(shù)據(jù)庫的配置,默認(rèn)會(huì)使用內(nèi)存的方式進(jìn)行存儲(chǔ)。

3. 內(nèi)容導(dǎo)入

Kernel Memory提供了三種內(nèi)容的導(dǎo)入的方式,第一種就是文件導(dǎo)入,最簡(jiǎn)單的方法就是直接指定文件的路徑,然后調(diào)用ImportDocumentAsync方法即可。

await memory.ImportDocumentAsync("./sample-SK-Readme.pdf");

如果不是本地文件的話,也可以使用文件流的方式進(jìn)行導(dǎo)入。

var fileStream = File.OpenRead("./sample-SK-Readme.pdf");
await memory.ImportDocumentAsync(fileStream, "sample-SK-Readme.pdf");

如果想一次性導(dǎo)入多個(gè)文檔的話,可以使用Document的方式進(jìn)行導(dǎo)入。

var document = new Document();
document.AddFile("./sample-SK-Readme.pdf");
await memory.ImportDocumentAsync(document);

Document本身可以添加多個(gè)文件,也可以添加文件流。另外Document本身也可以添加篩選的標(biāo)簽。

除了文件的導(dǎo)入,還可以直接導(dǎo)入文本。

var text = """
           some content
           """;
await memory.ImportTextAsync(text);

還有一種就是直接導(dǎo)入U(xiǎn)RL,這種方式會(huì)自動(dòng)從URL中獲取內(nèi)容。

var url = "https://raw.githubusercontent.com/microsoft/kernel-memory/main/README.md";
await memory.ImportWebPageAsync(url);

4. 問答和查詢

文檔導(dǎo)入完成之后,就可以進(jìn)行問答或者查詢了。

問答的話,只需要調(diào)用AskAsync方法即可。

var question = "What's Kernel Memory?";
var answer = await memory.AskAsync(question);

其中 answer 包含了答案的內(nèi)容,以及相關(guān)文檔以及相關(guān)度。
例如使用以下方式獲取答案的內(nèi)容:


Console.WriteLine(answer.Result + "\n");

foreach (var x in answer.RelevantSources)
{
    Console.WriteLine($"  * {x.SourceName} -- {x.Partitions.First().LastUpdate:D}");
}

/* OUTPUT */
/*
Kernel Memory is an open-source service and plugin specialized in the efficient indexing of datasets through custom continuous data hybrid pipelines. It enables natural language querying for obtaining answers from the indexed data, complete with citations and links to the original sources. Kernel Memory enhances data-driven features in applications built for popular AI platforms. It can be used as a library or as a Docker container.

  * content.url -- 2023年12月19日
  * sample-SK-Readme.pdf -- 2023年12月19日
*/

如果只想查詢有哪些相關(guān)文檔的話,可以使用SearchAsync 方法

var question = "What's Kernel Memory?";
var results = await memory.SearchAsync(question);

同樣的,從Results中可以獲取到相關(guān)的文檔。

foreach (var x in results.Results)
{
    Console.WriteLine($"  * {x.SourceName} -- {x.Partitions.First().LastUpdate:D}");
}
/* OUTPUT */
/*
  * content.url -- 2023年12月19日
  * sample-SK-Readme.pdf -- 2023年12月19日
*/

參考

  1. Kernel Memory README

總結(jié)

以上是生活随笔為你收集整理的Kernel Memory 入门系列:快速开始的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。