1、代码:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from langchain_chroma import Chroma
from meta_data import docs, metadata_field_info
# 自我问询rag self-rag
from base_llm import llm, embeddings_model
from langchain_classic.retrievers.self_query.base import SelfQueryRetriever
#from langchain_classic.retrievers.self_query.chroma import ChromaTranslator
# 文档内容描述(指导LLM理解文档内容)
document_content_description = "Brief description of technical articles"
# 创建向量数据库
vectorstore = Chroma.from_documents(docs, embeddings_model)
"""
SelfQueryRetriever.from_llm
问题:"作者A发布的论文2025的" 发送给大模型
意图识别
{
"query": 发布的论文
"filter": {'year':2025, 'author':'A'}
}
2.元数据过滤 本地条件判断
3. 语义搜索
在过滤完之后的数据中进行相识度对比
"""
retriever = SelfQueryRetriever.from_llm(
llm,
vectorstore,
document_content_description,
metadata_field_info,
#translator=ChromaTranslator(), # 明确指定
enable_limit=True
)
print(retriever.invoke('作者A发布的一篇论文'))
引用的文件base_llm.py代码如下:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from dotenv import load_dotenv
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_openai import ChatOpenAI
import os
load_dotenv()
llm = ChatOpenAI(api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url=os.getenv("DASHSCOPE_BASE_URL"),
model_name="qwen3.7-plus")
# 本地embedding模型地址
embedding_model_path = r'D:\LLM\Local_model\maidalun\bce-embedding-base_v1'
# 初始化嵌入模型(用于文本向量化)
embeddings_model = HuggingFaceEmbeddings(
model_name=embedding_model_path
)
引用的文件meta_data.py代码如下:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from langchain_core.documents import Document
from langchain_classic.chains.query_constructor.schema import AttributeInfo
docs = [
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"
)
]
2、执行报错了,报错内容如下:
C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Scripts\python.exe C:\Users\lenovo\PycharmProjects\PythonProject\rag\day08\02-元数据索引.py
C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_core\utils\pydantic.py:41: UserWarning: Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater.
from pydantic.v1 import BaseModel as BaseModelV1
Loading weights: 100%|██████████| 199/199 [00:00<00:00, 65081.21it/s]
Traceback (most recent call last):
File "C:\Users\lenovo\PycharmProjects\PythonProject\rag\day08\02-元数据索引.py", line 39, in <module>
retriever = SelfQueryRetriever.from_llm(
llm,
...<4 lines>...
enable_limit=True
)
File "C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_classic\retrievers\self_query\base.py", line 374, in from_llm
structured_query_translator = _get_builtin_translator(vectorstore)
File "C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_classic\retrievers\self_query\base.py", line 71, in _get_builtin_translator
from langchain_community.vectorstores import (
...<17 lines>...
)
ImportError: cannot import name 'DatabricksVectorSearch' from 'langchain_community.vectorstores' (C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_community\vectorstores\__init__.py)
Process finished with exit code 1
在deepseek上面搜索方案:

使用了这种方案,执行还是报一样的错:
C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Scripts\python.exe C:\Users\lenovo\PycharmProjects\PythonProject\rag\day08\02-元数据索引.py
C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_core\utils\pydantic.py:41: UserWarning: Core Pydantic V1 functionality isn't compatible with Python 3.14 or greater.
from pydantic.v1 import BaseModel as BaseModelV1
Loading weights: 100%|██████████| 199/199 [00:00<00:00, 49983.02it/s]
Traceback (most recent call last):
File "C:\Users\lenovo\PycharmProjects\PythonProject\rag\day08\02-元数据索引.py", line 39, in <module>
retriever = SelfQueryRetriever.from_llm(
llm,
...<4 lines>...
enable_limit=True
)
File "C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_classic\retrievers\self_query\base.py", line 374, in from_llm
structured_query_translator = _get_builtin_translator(vectorstore)
File "C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_classic\retrievers\self_query\base.py", line 71, in _get_builtin_translator
from langchain_community.vectorstores import (
...<17 lines>...
)
ImportError: cannot import name 'DatabricksVectorSearch' from 'langchain_community.vectorstores' (C:\Users\lenovo\PycharmProjects\PythonProject\.venv\Lib\site-packages\langchain_community\vectorstores\__init__.py)
Process finished with exit code 1