【RAG】【vector_stores043】使用LlamaIndex和KDB.AI向量存储的高级RAG与时间过滤器

张开发
2026/4/18 16:01:32 15 分钟阅读

分享文章

【RAG】【vector_stores043】使用LlamaIndex和KDB.AI向量存储的高级RAG与时间过滤器
本案例演示如何使用KDB.AI向量数据库和LlamaIndex框架构建一个具有时间过滤功能的检索增强生成(RAG)系统用于分析美国金融危机前后的金融法规变化。1. 案例目标本案例的主要目标是构建时间感知的RAG系统使用KDB.AI向量数据库存储金融法规文档并支持基于时间的过滤查询。分析金融法规变化对比2008年金融危机前后的美国金融法规分析其变化和影响。演示高级查询功能展示如何使用时间过滤器进行精确查询获取特定时间范围内的相关信息。2. 技术栈与核心依赖LlamaIndex用于构建RAG系统的核心框架KDB.AI高性能向量数据库支持时间过滤功能OpenAI提供嵌入模型和语言模型服务Pandas用于数据处理和分析kdbai_clientKDB.AI的Python客户端库在Python环境中需要安装以下核心依赖!pip install llama-index llama-index-llms-openai llama-index-embeddings-openai llama-index-readers-file llama-index-vector-stores-kdbai !pip install kdbai_client pandas3. 环境配置在运行本案例前需要配置以下环境OpenAI API密钥设置OpenAI API密钥用于嵌入和生成服务KDB.AI端点和API密钥获取KDB.AI的访问端点和API密钥模型配置选择合适的嵌入模型和生成模型# 设置OpenAI API密钥 os.environ[OPENAI_API_KEY] your-openai-api-key # 设置KDB.AI端点和API密钥 KDBAI_ENDPOINT your-kdbai-endpoint KDBAI_API_KEY your-kdbai-api-key # 配置模型 EMBEDDING_MODEL text-embedding-3-small GENERATION_MODEL gpt-4o-mini4. 案例实现4.1 创建KDB.AI会话和表首先我们需要连接到KDB.AI并创建一个表来存储金融法规文档的向量表示# 连接到KDB.AI session kdbai.Session(endpointKDBAI_ENDPOINT, api_keyKDBAI_API_KEY) database session.database(default) # 定义表结构 schema [ {name: document_id, type: bytes}, {name: text, type: bytes}, {name: embeddings, type: float32s}, {name: title, type: str}, {name: publication_date, type: datetime64[ns]}, ] # 定义索引 indexFlat { name: flat_index, type: flat, column: embeddings, params: {dims: 1536, metric: L2}, } # 创建表 table database.create_table(KDBAI_TABLE_NAME, schemaschema, indexes[indexFlat])4.2 准备金融法规文档本案例使用两份重要的美国金融法规文档Gramm-Leach-Bliley Act (1999)2008年金融危机前的主要金融法规Dodd-Frank Wall Street Reform and Consumer Protection Act (2010)2008年金融危机后的主要金融法规# 定义文档URL和元数据 INPUT_URLS [ https://www.govinfo.gov/content/pkg/PLAW-106publ102/pdf/PLAW-106publ102.pdf, https://www.govinfo.gov/content/pkg/PLAW-111publ203/pdf/PLAW-111publ203.pdf, ] METADATA { pdf/PLAW-106publ102.pdf: { title: GRAMM–LEACH–BLILEY ACT, 1999, publication_date: pd.to_datetime(1999-11-12), }, pdf/PLAW-111publ203.pdf: { title: DODD-FRANK WALL STREET REFORM AND CONSUMER PROTECTION ACT, 2010, publication_date: pd.to_datetime(2010-07-21), }, }4.3 构建LlamaIndex RAG管道使用LlamaIndex和KDB.AI向量存储构建RAG管道# 加载文档 documents SimpleDirectoryReader( input_fileslocal_files, file_metadataget_metadata, ) docs documents.load_data() # 创建向量存储和索引 vector_store KDBAIVectorStore(table) storage_context StorageContext.from_defaults(vector_storevector_store) index VectorStoreIndex.from_documents( docs, storage_contextstorage_context, transformations[SentenceSplitter(chunk_size2048, chunk_overlap0)], )4.4 实现时间过滤查询创建支持时间过滤的查询引擎# 查询2008年金融危机前的法规 query_engine_before index.as_query_engine( similarity_top_k15, vector_store_kwargs{ index: flat_index, filter: [[, publication_date, datetime.date(2008, 9, 15)]], sort_columns: publication_date, }, ) # 查询2008年金融危机后的法规 query_engine_after index.as_query_engine( similarity_top_k15, vector_store_kwargs{ index: flat_index, filter: [[, publication_date, datetime.date(2008, 9, 15)]], sort_columns: publication_date, }, )5. 案例效果5.1 2008年金融危机前的金融法规分析通过查询2008年金融危机前的法规我们了解到2008年金融危机前美国主要的金融法规是1999年颁布的Gramm-Leach-Bliley法案。该法案促进了银行、证券公司和保险公司之间的关联实际上废除了Glass-Steagall法案的部分内容该法案此前将这些金融服务分离开来。Gramm-Leach-Bliley法案旨在通过为各种金融机构的整合提供框架增强金融服务行业的竞争力。5.2 2008年金融危机后的金融法规分析通过查询2008年金融危机后的法规我们了解到2008年金融危机后颁布的新美国金融法规是2010年7月21日签署成为法律的Dodd-Frank华尔街改革和消费者保护法案。该立法旨在促进金融稳定增强金融系统的问责制和透明度并保护消费者免受滥用金融行为的侵害。5.3 深度分析通过综合分析危机前后的法规变化我们得出以下结论对美国2008年金融危机前后的金融法规分析显示为防止此类危机再次发生法规发生了重大变化。危机前监管框架的特点是缺乏全面监督特别是对非银行金融机构。监管环境允许过度冒险、资本要求不足和金融交易透明度不足。这种环境导致了房地产泡沫和随后主要金融机构的倒闭引发了广泛的经济动荡。作为回应2010年颁布了Dodd-Frank华尔街改革和消费者保护法案。该立法引入了几项关键改革1) 创建金融稳定监督委员会(FSOC)2) 加强监管监督3) 消费者保护措施4) 沃尔克规则5) 增加透明度和报告要求。6. 案例实现思路6.1 时间感知的RAG系统设计本案例的核心创新是构建了一个时间感知的RAG系统通过以下方式实现时间元数据存储在向量数据库中存储文档的发布日期作为元数据时间过滤查询利用KDB.AI的时间过滤功能在向量搜索时应用时间条件时间排序按时间顺序组织搜索结果便于分析法规演变6.2 多阶段查询策略案例采用了多阶段查询策略来获取全面的分析危机前查询了解2008年金融危机前的监管环境危机后查询了解2008年金融危机后的监管变化综合分析结合前后两个时期的信息进行深度分析6.3 向量存储优化通过KDB.AI的高级功能优化向量存储和检索高效索引使用平面索引提供精确的向量相似度搜索多维过滤结合向量相似度和时间过滤进行精确检索性能优化利用KDB.AI的高性能向量计算能力7. 扩展建议7.1 多维度过滤扩展地理过滤添加地理位置信息支持按国家或地区过滤法规主题分类添加主题标签支持按金融监管领域分类查询影响范围添加法规影响范围信息支持按影响对象分类7.2 交互式分析界面时间轴可视化创建交互式时间轴直观展示法规演变对比分析工具开发工具对比不同时期的法规差异影响评估集成经济数据评估法规变化的市场影响7.3 智能问答系统多轮对话扩展为支持多轮对话的智能问答系统假设分析支持基于历史数据的假设性法规分析预测模型基于历史趋势预测未来可能的法规变化8. 总结本案例成功演示了如何使用LlamaIndex和KDB.AI构建一个时间感知的RAG系统用于分析美国金融危机前后的金融法规变化。通过结合向量搜索和时间过滤我们能够精确检索特定时间范围内的相关信息并进行深度分析。该案例的主要贡献包括时间感知检索展示了如何在RAG系统中集成时间过滤功能法规分析应用提供了一个实用的金融法规分析框架多阶段查询策略演示了如何通过分阶段查询获取全面的分析结果这个框架可以扩展到其他需要时间感知检索的领域如历史事件分析、科技发展追踪、政策变化研究等为构建更智能的信息检索和分析系统提供了有价值的参考。

更多文章