Knowledge bases

本节我们将基于一个pdf文件,创建自己的knowledge base。

Bedrock Knowledge Base 是一种 RAG (Retrieval Augmented Generation) 实现。用户无需自建基础设施,它会自动向量化和索引,并支持多种检索方式(向量搜索、语义搜索、混合检索),它会自动进行文档切分和处理,内置数据版本控制

准备数据

Bedrock knowledge bases需要读取s3的数据,这里我们先创建一个s3桶,并上传一个pdf文件:

aws s3 mb s3://knowledge-base-xxx
wget https://ico.org.uk/media/for-organisations/guide-to-the-general-data-protection-regulation-gdpr-1-0.pdf
aws s3 cp guide-to-the-general-data-protection-regulation-gdpr-1-0.pdf s3://knowledge-base-xxx

创建knowledge bases

进入bedrock服务,创建knowledge base:

image-20241203125024536

名称和IAM role保持默认选项,选择S3作为数据源:

image-20241203125108310

进入下一步后,选择上一步创建的S3桶作为数据源:

image-20241203125213872

选择Titan Text Embeddings v2作为Embedding model;

在向量数据库的选择中,可以使用opensearch、Aurora、MongoDB、Redis等,我们这里使用Quick create,这样会自动创建一个opensearch serverless集群作为向量数据库:

image-20241203125251738

进入最后一步,review上面的选择,然后进行创建:

image-20241203125311521

创建过程需要等待5分钟。

同步数据及进行查询

创建好knowledge base后,还需要进行数据同步,它会自动读取pdf,并进行embedding操作,保存到opensearch serverless:

image-20241203125945623

等待同步完成:

image-20241203130039459

在右侧选择一个模型,并进行查询:

image-20241203130109217

提问问题后,它会根据pdf的内容进行回答,并且点击参考中的链接,会跳转到s3的对应路径:

image-20241203130243479

retrieve和 retrieveAndGenerate

在bedrock-agent-runtime中,有两个API retrieveretrieveAndGenerate

image-20241203132425648

如果关闭右上角的Generate responses, knowledge base只会获取向量数据库中的结果,不会再调用LLM再次生成回答:

image-20241203132723416

从控制台抓包也能看到这两种方式不同API的调用:

image-20241203132842252

image-20241203132926553