首页 > 数据库 >KernelMemory如何操作向量数据库

KernelMemory如何操作向量数据库

时间:2024-04-02 13:33:42浏览次数:31  
标签:Index orchestrator log 数据库 stepName KernelMemory ._ 向量

使用QdrantMemory

官方其实给出了使用案例,参考Qdrant.TestApplication的Program类就可以获取基本的操作方法,这里我主要补充的几点注意事项。
CreateIndexAsync:创建一个长度固定的Index空间,且向量长度必须大于0。
UpsertAsync:插入或更新向量记录
- 插入的向量长度必须和创建时一致
- 更新时必须带向量
GetListAsync:获取Index空间limit条向量记录
GetSimilarListAsync:带query查询参数获取Index空间limit条向量记录
1. 在官方案例中定义了一个伪造的FakeEmbeddingGenerator类,但GetSimilarListAsync方法需要注册真实有效的EmbeddingGenerator才能使用,因为会需要向量化提示词。
2. withEmbeddings:是否携带向量
3. limit:查询的数量
4. filters:筛选器

var filters=new List<MemoryFilter> 
	{
		//颜色是蓝色&&类型为邮箱
		MemoryFilters.ByTag("color","blue").ByTag("type", "email"),
		//或者颜色是红色
		MemoryFilters.ByTag("color","red"),
	}

PipelineStepHandler

在管道中可以通过IPipelineOrchestrator获取需要配置信息,例如注入的向量数据库,Embedding模型处理引擎等。

private readonly IPipelineOrchestrator _orchestrator;
public YourPipelineStepHandler(string stepName,
IPipelineOrchestrator orchestrator,
ILogger<YourPipelineStepHandler>? log = null)
{
	//当前管道名称
	this.StepName = stepName;
	//是否启动EmbeddingGeneration
	this._embeddingGenerationEnabled = orchestrator.EmbeddingGenerationEnabled;
	
	this._orchestrator = orchestrator;
	//获取当前注入的所有向量数据库
	this._memoryDbs = orchestrator.GetMemoryDbs();
	//获取当前注入的所有Embedding模型处理引擎
	this._embeddingGenerators = orchestrator.GetEmbeddingGenerators();

	if (this._embeddingGenerationEnabled)
	{
		if (this._embeddingGenerators.Count < 1)
		{
			throw new Exception("处理程序" + stepName + "未就绪,未配置嵌入生成器");
		}
	}
	this._log = log ?? DefaultLogger<YourPipelineStepHandler>.Instance;
	this._log.LogInformation("Handler '{0}' ready", stepName);
}

public async Task<(bool success, DataPipeline updatedPipeline)> InvokeAsync(DataPipeline pipeline, CancellationToken cancellationToken = default)
{
	//...操作
	var isCreateIndex=true;
	foreach (IMemoryDb client in this._memoryDbs)
	{
		if (isCreateIndex)
		{
			//创建Index空间
			await client.CreateIndexAsync(pipeline.Index, record.Vector.Length, cancellationToken).ConfigureAwait(false);
			//创建一次即可
			isCreateIndex = false;
		}
		//插入或更新向量记录
		await client.UpsertAsync(pipeline.Index,record,cancellationToken).ConfigureAwait(false);
	}
	//...操作
}

标签:Index,orchestrator,log,数据库,stepName,KernelMemory,._,向量
From: https://www.cnblogs.com/FaceMan/p/18110370

相关文章

  • 快速上手SemanticKernel+KernelMemory
    本文撰写目的是旨在帮助新手快速上手,原理部分可以参考博客园大佬宵伯特的教程。KernelMemory入门系列博客:(KernelMemory--宵伯特-博客园(cnblogs.com))SemanticKernel入门系列:(SemanticKernel--宵伯特-博客园(cnblogs.com))为了方便以下SemanticKernel称作SK,Kernel......
  • 【Redis教程0x0C】数据库与缓存的一致性保证
    1.引言当我们在实现业务的过程中,如果发现服务器的性能瓶颈在数据库时,就要考虑加上Redis,让它作为数据库的缓存了。这样,客户端请求数据时,如果能在缓存命中,就不用去查数据库了,这大大减轻了数据库的压力,提高了服务器性能。那么这里就产生了个问题,我们在数据更新的时候,既需要......
  • Cortex-M7中断向量表的重定向
    1前言    系统上电后,PC会指向复位向量,即向量表中的Reset_Handler,而系统就是通过VectorTableOffsetRegister(VTOR)的值加上4字节来找到复位向量的入口的。        因为地址0处应该存储引导代码,所以它通常映射到Flash或者是ROM器件,并且它们的值不......
  • 数据库之迁移常规操作(Postgresql篇)
    一、docker安装postgresql1.拉取postgresdockerpullpostgres2.创建容器注:默认登录账户postgres,密码123456,对外暴露端口5432,卷映射:可在物理机修改数据库配置文件引用文章查看......
  • 旅游管理系统|基于Springboot的旅游管理系统设计与实现(源码+数据库+文档)
    旅游管理系统目录目录基于Springboot的旅游管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户管理2、景点分类管理3、景点信息管理4、酒店信息管理5、景点信息6、游记分享管理 四、数据库设计1、实体ER图   2、具体的表设计如下所示:......
  • 学生成绩管理系统|基于Springboot的学生成绩管理系统设计与实现(源码+数据库+文档)
    学生成绩管理系统目录目录基于Springboot的学生成绩管理系统设计与实现一、前言二、系统功能设计 三、系统实现1、管理员功能模块2、学生功能模块3、教师功能模块 四、数据库设计1、实体ER图五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获......
  • 旅游管理系统|基于Springboot的旅游管理系统设计与实现(源码+数据库+文档)
    旅游管理系统目录目录基于Springboot的旅游管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户管理2、景点分类管理3、景点信息管理4、酒店信息管理5、景点信息6、游记分享管理 四、数据库设计1、实体ER图   2、具体的表设计如下所示:......
  • 数据库实施步骤
            数据库要实现的是:将现实世界存在的实体模型通过建模转化为信息世界的概念模型,然后再将概念模型转化为数据模型,数据模型进一步规范化后就可实施数据的创建。        现实世界中各种各样的事物都有自己的一些性质,同时又可根据某些相似性质将它们归纳为......
  • 学生成绩管理系统|基于Springboot的学生成绩管理系统设计与实现(源码+数据库+文档)
    学生成绩管理系统目录目录基于Springboot的学生成绩管理系统设计与实现一、前言二、系统功能设计 三、系统实现1、管理员功能模块2、学生功能模块3、教师功能模块 四、数据库设计1、实体ER图五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获......
  • 旅游管理系统|基于Springboot的旅游管理系统设计与实现(源码+数据库+文档)
    旅游管理系统目录目录基于Springboot的旅游管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户管理2、景点分类管理3、景点信息管理4、酒店信息管理5、景点信息6、游记分享管理 四、数据库设计1、实体ER图   2、具体的表设计如下所示:......