RAG 查询技能
此技能允许代理查询计量经济学RAG知识库,该知识库基于Bruce Hansen的计量经济学教材构建。
概述
- 数据库类型: FAISS 向量数据库
- 数据库位置:
D:\AutoRegMonkey\database\rag_db\
使用方法
当用户输入以"rag:"开头时,执行以下步骤:
- 提取查询问题: 识别"rag:"后面的查询文本
- 调用Python脚本: 使用用户的Python环境执行RAG查询
- 返回结果: 将查询结果格式化后呈现给用户
Python 脚本模板
强制Python I/O用UTF-8:sys.stdout.reconfigure(encoding='utf-8') 和 sys.stderr.reconfigure(encoding='utf-8') 使用以下Python代码进行查询:
python1import sys 2sys.path.append(r"D:\AutoRegMonkey\database") 3from rag_query import EconometricsRAG 4sys.stdout.reconfigure(encoding='utf-8') 5sys.stderr.reconfigure(encoding='utf-8') 6 7# 初始化RAG 8rag = EconometricsRAG() 9 10# 执行查询(从用户输入中提取的问题) 11results = rag.query("用户的问题", n_results=5) 12 13# 处理并输出结果 14output_lines = [] 15for i, r in enumerate(results): 16 chunk = r['chunk'] 17 score = r['score'] 18 output_lines.append(f"【结果 {i+1}】 - 来源: 第{chunk['page']}页, 相似度: {score:.4f}") 19 output_lines.append(f"{chunk['text'][:500]}{'...' if len(chunk['text']) > 500 else ''}") 20 output_lines.append("---") 21 22print("\n".join(output_lines))
通过Bash执行
在Bash工具中使用以下命令:
bash1"C:\Users\29165\anaconda3\python.exe" -c " 2import sys 3sys.path.append(r'D:\AutoRegMonkey\database') 4from rag_query import EconometricsRAG 5 6rag = EconometricsRAG() 7results = rag.query('用户的问题', n_results=5) 8 9for i, r in enumerate(results): 10 chunk = r['chunk'] 11 score = r['score'] 12 print(f'【结果 {i+1}】 - 来源: 第{chunk[\"page\"]}页, 相似度: {score:.4f}') 13 print(f'{chunk[\"text\"][:500]}{\"...\" if len(chunk[\"text\"]) > 500 else \"\"}') 14 print('---') 15"
注意:将'用户的问题'替换为实际查询文本。
查询示例
示例1: 基础查询
用户输入: rag:什么是OLS回归?
执行代码:
bash1"C:\Users\29165\anaconda3\python.exe" -c " 2import sys 3sys.path.append(r'D:\AutoRegMonkey\database') 4from rag_query import EconometricsRAG 5 6rag = EconometricsRAG() 7results = rag.query('什么是OLS回归?', n_results=5) 8 9for i, r in enumerate(results): 10 chunk = r['chunk'] 11 score = r['score'] 12 print(f'【结果 {i+1}】 - 来源: 第{chunk[\"page\"]}页, 相似度: {score:.4f}') 13 print(f'{chunk[\"text\"][:500]}{\"...\" if len(chunk[\"text\"]) > 500 else \"\"}') 14 print('---') 15"
示例2: 获取LLM上下文
如果需要在其他分析中使用RAG上下文,可以使用get_context()方法:
python1context = rag.get_context("heteroskedasticity robust standard errors", n_results=3) 2print(context)
示例3: 按页码搜索
python1chunks = rag.search_by_page(page_number=100) 2for chunk in chunks: 3 print(f"第{chunk['page']}页: {chunk['text'][:200]}")
文件组织
- 原始数据:
D:\AutoRegMonkey\database\rag_db\(FAISS索引和文档块) - 查询接口:
D:\AutoRegMonkey\database\rag_query.py - API文档:
D:\AutoRegMonkey\database\RAG_API_说明.md
注意事项
- Python环境: 使用用户的Anaconda Python环境 (
C:\Users\29165\anaconda3\python.exe) - 路径引用: 确保正确引用包含空格或特殊字符的路径
- 结果数量: 默认返回5个最相关结果,可根据需要调整
n_results参数 - 输出格式: 保持输出整洁,限制文本长度以便阅读
- 错误处理: 如果查询失败,检查数据库路径和Python模块导入
高级用法
与其他技能结合
此技能可与autoregmonkey技能结合使用,在计量经济学分析过程中实时查询相关知识:
- 用户输入以"autoregmonkey:"开头的计量任务
- 在分析过程中,使用RAG技能查询相关计量理论
- 将查询结果融入分析报告
批量查询
对于复杂问题,可执行多次查询以获取全面信息:
python1queries = ["OLS regression", "heteroskedasticity", "instrumental variables"] 2for q in queries: 3 results = rag.query(q, n_results=2) 4 # 处理结果...
故障排除
- 导入错误: 确保
sys.path.append(r'D:\AutoRegMonkey\database')已添加 - 模块未找到: 检查
rag_query.py文件是否存在 - 数据库错误: 确认
D:\AutoRegMonkey\database\rag_db\目录包含必要文件 - 编码问题: 使用
encoding='utf-8'处理中英文文本