langchain 无法使用`azure_cosmos_db_no_sql`的元数据进行过滤,

rkttyhzu  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(48)

检查其他资源

  • 我为这个问题添加了一个非常描述性的标题。
  • 我使用集成搜索在LangChain文档中进行了搜索。
  • 我使用GitHub搜索查找了一个类似的问题,但没有找到。
  • 我确信这是LangChain中的一个bug,而不是我的代码。
  • 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此bug。

示例代码

我使用无SQL API将文档插入了cosmos db,插入操作正常。文档包含元数据(其中一个字段是claim_id)。我想对claim_id进行过滤并对部分文档进行搜索。
以下是代码,但它似乎不起作用。它总是返回结果,而不考虑过滤,此外,k保持其默认值4。

search_type='similarity',
    search_kwargs={
        'k': 3,
        'filter': {"claim_id": 1}
    }
)
from langchain.chains import RetrievalQA
qa_stuff = RetrievalQA.from_chain_type(
    llm=llm, 
    chain_type="stuff", 
    retriever=retriever,
    verbose=True,
    return_source_documents=True,
)
query =  "what is prompt engineering?"

response = qa_stuff.invoke(query)
print(response) ```

### Error Message and Stack Trace (if applicable)

no error, but unexpected behavior 

### Description

I want to query on documents that have only claim_id=1 as metadata.
The returned result shows that the filtering does not work, it seems ignored

### System Info

ai21==2.6.0
ai21-tokenizer==0.10.0
aiohttp==3.9.5
aiosignal==1.3.1
annotated-types==0.7.0
anyio==4.4.0
asttokens==2.4.1
attrs==23.2.0
azure-core==1.30.2
azure-cosmos==4.7.0
certifi==2024.6.2
charset-normalizer==3.3.2
colorama==0.4.6
comm==0.2.2
dataclasses-json==0.6.7
debugpy==1.8.1
decorator==5.1.1
distro==1.9.0
executing==2.0.1
filelock==3.15.1
frozenlist==1.4.1
fsspec==2024.6.0
greenlet==3.0.3
h11==0.14.0
httpcore==1.0.5
httpx==0.27.0
huggingface-hub==0.23.4
idna==3.7
ipykernel==6.29.4
ipython==8.25.0
jedi==0.19.1
jsonpatch==1.33
jsonpointer==3.0.0
jupyter_client==8.6.2
jupyter_core==5.7.2
langchain==0.2.5
langchain-community==0.2.5
langchain-core==0.2.7
langchain-openai==0.1.8
langchain-text-splitters==0.2.1
langsmith==0.1.77
marshmallow==3.21.3
matplotlib-inline==0.1.7
multidict==6.0.5
mypy-extensions==1.0.0
nest-asyncio==1.6.0
numpy==1.26.4
openai==1.34.0
orjson==3.10.5
packaging==24.1
parso==0.8.4
platformdirs==4.2.2
prompt_toolkit==3.0.47
psutil==5.9.8
pure-eval==0.2.2
pydantic==2.7.4
pydantic_core==2.18.4
Pygments==2.18.0
python-dateutil==2.9.0.post0
python-dotenv==1.0.1
pywin32==306
PyYAML==6.0.1
pyzmq==26.0.3
regex==2024.5.15
requests==2.32.3
sentencepiece==0.2.0
six==1.16.0
sniffio==1.3.1
SQLAlchemy==2.0.30
stack-data==0.6.3
tenacity==8.4.1
tiktoken==0.7.0
tokenizers==0.19.1
tornado==6.4.1
tqdm==4.66.4
traitlets==5.14.3
typing-inspect==0.9.0
typing_extensions==4.12.2
urllib3==2.2.2
wcwidth==0.2.13
yarl==1.9.4
slmsl1lt

slmsl1lt1#

我遇到了同样的问题,将kwargs中的'filter'替换为'filters'(它为我解决了问题)。文档存在问题。

相关问题