当前位置: 首页 > news >正文

RAG-02-元数据索引

image

 步骤:

  1. 切割成多个子文件
  2. 根据元数据字段规则,为每个子文件增加元数据属性metadata,比如说文件名,语音类型,出版时间,作者等等
  3. 存储到向量库中
  4. 当检索时,用户的提示词先通过LLM转成固定格式  query和filter,也就是问题和过滤条件的json数据
  5. 将提问的json和源文件数据进行比对,相同属性符合的值都过滤
  6. 再通过query问题和匹配好的源文件文本向量匹配,得出结论
from langchain_core.documents import Document
from langchain_classic.chains.query_constructor.schema import AttributeInfodocs = [Document(page_content="作者A团队开发出基于深度学习的图像识别系统,在复杂场景下的识别准确率提升250%",metadata={"year": 2025, "rating": 9.3, "genre": "AI", "author": "A"},),Document(page_content="物联网技术成功应用于智能农业监控,作者B主导的项目实现农作物产量提升20%",metadata={"year": 2024, "rating": 9.5, "genre": "IoT", "author": "B"},),Document(page_content="边缘计算平台实现实时数据处理突破,作者C构建的新型架构支持千万级并发计算",metadata={"year": 2023, "rating": 8.8, "genre": "Edge Computing", "author": "C"},),Document(page_content="机器学习模型预测2025年股市趋势,作者A团队构建的模型准确率超95%",metadata={"year": 2024, "rating": 9.0, "genre": "Machine Learning", "author": "A"},),Document(page_content="基于人工智能的心脏病诊断系统在临床应用中达到顶级专家水平,作者B获医疗科技创新奖",metadata={"year": 2025, "rating": 7.2, "genre": "AI", "author": "B"},),Document(page_content="区块链技术在供应链管理中取得突破,作者C设计的新型协议提升供应链透明度30%",metadata={"year": 2024, "rating": 8.9, "genre": "Blockchain", "author": "C"},),Document(page_content="云计算平台实现能效优化,作者A研发的智能调度系统使数据中心能耗降低50%",metadata={"year": 2024, "rating": 8.6, "genre": "Cloud", "author": "A"},),Document(page_content="大数据分析助力环保监测,作者B团队实现污染源识别准确率提升30%",metadata={"year": 2025, "rating": 7.5, "genre": "Big Data", "author": "B"},)
]# 元数据字段定义(指导LLM如何解析查询条件)
metadata_field_info = [AttributeInfo(name="genre",description="Technical domain of the article, options: ['AI', 'Blockchain', 'Cloud', 'Big Data']",type="string",),AttributeInfo(name="year",description="Publication year of the article",type="integer",),AttributeInfo(name="author",description="Author's name who signed the article",type="string",),AttributeInfo(name="rating",description="Technical value assessment score (1-10 scale)",type="float")
]
from langchain_chroma import Chroma
from langchain_community.embeddings.dashscope import DashScopeEmbeddings
from 元数据 import docs, metadata_field_info
from langchain_classic.retrievers.self_query.base import SelfQueryRetriever
from langchain_openai import ChatOpenAI
import os
from dotenv import load_dotenv
from config import QIANWEN_CONFIG
load_dotenv()# 本地embedding模型地址
print("\n[3/6] 初始化 Embedding 模型...")
embeddings_model = DashScopeEmbeddings(model="text-embedding-v1",dashscope_api_key=QIANWEN_CONFIG["api_key"]
)
print("✅ Embedding 模型初始化成功")# 文档内容描述(指导LLM理解文档内容)
document_content_description = "Brief description of technical articles"# 步骤 4: 初始化 LLM
print("\n[4/6] 初始化 LLM...")
llm = ChatOpenAI(api_key=QIANWEN_CONFIG["api_key"],base_url=QIANWEN_CONFIG["base_url"],model=QIANWEN_CONFIG["model"],timeout=60,max_retries=3,temperature=0.7
)
print("✅ LLM 初始化成功")
# 创建向量数据库
vectorstore = Chroma.from_documents(docs, embeddings_model)# 创建自查询检索器(核心组件)
"""
SelfQueryRetriever.from_llm解析步骤:
1. 用户的问题("2023年评分超过8分的机器学习论文")LLM 任务(会由底层源码自己实现):识别用户意图中的显式条件(如“2023年”对应 year=2023)。提取隐式语义关键词(如“机器学习论文”作为向量搜索关键词)。将模糊表述转换为结构化操作符(如“超过8分” → {"$gt": 8})。{"query": "机器学习论文","filter": {"year": 2023, "rating": {"$gt": 8}}}2. 元数据过滤根据 filter 对向量数据库中的文档元数据进行筛选。(筛选出 year=2023 且 rating>8 的所有文档。)3. 语义搜索在元数据过滤后的文档子集中,用 query 进行向量相似性搜索。4. 结果合并与排序综合元数据匹配度(如完全匹配 year=2023)和语义相关性(向量得分),返回排序后的文档列表"""
retriever = SelfQueryRetriever.from_llm(llm,vectorstore,document_content_description,metadata_field_info,# enable_limit 启用限制查询数量enable_limit=True
)# print(retriever.invoke("作者B在2024年发布的文章"))
# 限定查询的数量需要设置enable_limit=True
print(retriever.invoke("2023年评分超过8分的机器学习论文"))

 

http://www.jsqmd.com/news/438369/

相关文章:

  • 打工仔必备技能:2026年移动云OpenClaw(Clawdbot)AI助手一键搭建宝典
  • 2026年3月宁津爬坡输送机厂家推荐:行业权威盘点与品质红榜发布 - 品牌鉴赏师
  • 2026年3月流水线网带输送机厂家最新推荐,聚焦自动化产线与高效衔接 - 品牌鉴赏师
  • 2026年防火抗爆墙专业选型指南:纤维增强水泥复合钢制抗爆墙与4小时抗爆门/窗厂家推荐 - 品牌推荐官
  • 设备信息1
  • 性价比高的农村建房公司推荐,金鼎乡建值得选吗 - myqiye
  • 美容院预约小程序怎么制作,美业会员管理小程序搭建 - 码云数智
  • 家政小程序制作流程,0基础快速搭建 - 码云数智
  • 2026年3月宁津平顶链输送机厂家推荐:行业权威盘点与品质红榜发布 - 品牌鉴赏师
  • 看不见的敌人:如何筑起企业内部数据安全的铜墙铁壁
  • 小程序定制开发如何选择服务商?2026年北京地区专业开发企业解析 - 品牌2026
  • 学霸同款 8个降AI率平台测评:专科生降AI率必看攻略
  • 2026年济南、泰安等地环保全屋定制排名,推荐专业靠谱的全屋定制服务品牌 - myqiye
  • SeaTunnel 2.3.11 + Web 1.0.3 Docker 部署实战:Kafka 同步 Hive/ES 完整指南
  • 2026年3月山东链板输送线厂家推荐:聚焦企业综合实力与核心竞争力 - 品牌鉴赏师
  • 盘点北京地区靠谱的红外热像仪生产厂,哪家更值得选? - 工业品网
  • 说说2026年值得选购的室内家装设计师,口碑好的都在这 - 工业品牌热点
  • 2026自动售货机厂家TOP6口碑推荐|AI赋能全场景无人售货机厂家推荐指南 - 品牌智鉴榜
  • Python基于Vue的 酒店管理系统的设计与实现_django flask pycharm
  • 2026年甘肃保温材料生产厂家综合实力榜:全顺保温为何获得口碑好评 - 深度智识库
  • 揭秘行业TOP5企业:VR电子沙盘与多媒体数字展厅如何重塑未来展示体验?
  • 2026年安费诺FPC连接器性价比分析,含间距大小、插拔力度及原产地 - mypinpai
  • 2026年3月冲孔板链输送线厂家最新推荐,聚焦透气沥水与清洗配套 - 品牌鉴赏师
  • 分析京津冀地区拉链袋包装供应商哪家好,屹晨众创性价比咋样? - 工业品网
  • 分销商城小程序怎么做 - 码云数智
  • 2026年3月山东平顶链输送机厂家推荐:聚焦企业综合实力与核心竞争力 - 品牌鉴赏师
  • Trae AI
  • 智启万象,炬耀未来:星图销冠系统如何助力企业实现智能增长新突破
  • 2026年了,环保企业还有必要做线上营销吗?20 年厂商亲身经验分享,一文看懂 - 博客万
  • 2026年全国靠谱的考研数学辅导推荐,颜语堂实力不容小觑 - 工业推荐榜