SemanticKernel/C#:实现接口,接入本地嵌入模型

💡 原文中文,约6700字,阅读约需16分钟。
📝

内容提要

本文介绍了如何通过Codeblaze.SemanticKernel项目实现ITextEmbeddingGenerationService接口,接入本地嵌入模型。通过实现接口中的方法和属性,可以将Ollama中的嵌入模型接入到Codeblaze.SemanticKernel中。文章还提供了使用OllamaTextEmbeddingGeneration类和扩展方法WithOllamaTextEmbeddingGeneration的示例代码。最后,作者展示了使用界面测试了RAG效果和回答效果。

🎯

关键要点

  • 本文介绍了如何通过Codeblaze.SemanticKernel项目实现ITextEmbeddingGenerationService接口,接入本地嵌入模型。

  • Codeblaze.SemanticKernel项目实现了多个接口,包括ITextGenerationService、IChatCompletionService和ITextEmbeddingGenerationService。

  • Ollama的对话支持OpenAI格式,但嵌入模型尚未兼容,因此需要实现ITextEmbeddingGenerationService接口。

  • ITextEmbeddingGenerationService接口用于生成浮点类型文本嵌入。

  • OllamaBase类用于实现Ollama的基本功能,包括PingOllamaAsync方法。

  • OllamaTextEmbeddingGeneration类实现了GenerateEmbeddingsAsync方法,通过向Ollama发送请求获取嵌入数组。

  • 扩展方法WithOllamaTextEmbeddingGeneration用于将Ollama作为文本嵌入生成后端接入语义记忆。

  • 示例代码展示了如何使用MemoryBuilder构建文本记忆,并接入Ollama的嵌入模型。

  • 使用WPF界面测试了RAG效果和回答效果,展示了嵌入模型的应用。

延伸问答

如何通过Codeblaze.SemanticKernel接入本地嵌入模型?

可以通过实现ITextEmbeddingGenerationService接口来接入本地嵌入模型,具体方法包括实现接口中的GenerateEmbeddingsAsync方法。

Ollama的嵌入模型与OpenAI格式有什么不同?

Ollama的嵌入模型尚未兼容OpenAI格式,因此需要通过实现ITextEmbeddingGenerationService接口来接入。

示例代码中如何使用OllamaTextEmbeddingGeneration类?

示例代码展示了如何创建OllamaTextEmbeddingGeneration实例,并调用GenerateEmbeddingsAsync方法获取文本嵌入。

MemoryBuilder如何与Ollama的嵌入模型结合使用?

可以通过扩展方法WithOllamaTextEmbeddingGeneration将Ollama作为文本嵌入生成后端接入MemoryBuilder。

如何测试RAG效果和回答效果?

可以使用WPF界面进行测试,通过将文本向量化存入数据库来评估RAG效果和回答效果。

ITextEmbeddingGenerationService接口的主要功能是什么?

ITextEmbeddingGenerationService接口用于生成浮点类型的文本嵌入,提供了生成嵌入的标准方法。

🏷️

标签

➡️

继续阅读