提问人:OlgaPp 提问时间:11/17/2023 最后编辑:OlgaPp 更新时间:11/19/2023 访问量:58
LangChain vectorStore:如何使用search_kwargs过滤器?
LangChain vectorStore: how to use search_kwargs filter?
问:
我正在关注LangChain上的各种教程,现在正试图弄清楚如何使用vectorstore中的文档子集而不是整个数据库。
vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings())
retriever = vectorstore.as_retriever()
想象一个聊天场景。
- 用户:我在找X。
- 聊天机器人:(提出一个确定性问题,例如)这份文件从什么时候开始?
- 用户:2023-11-16 后端 以某种方式过滤矢量存储,例如
retriever = vectorstore.as_retriever(filters="document_name matches '2023-11-16*'")
- 聊天机器人:以下是一些相关文件:...
在文档中,他们列出了一个示例:
docsearch.as_retriever(
search_kwargs={'filter': {'paper_title':'GPT-4 Technical Report'}}
)
目前尚不清楚的是:
- 什么是paper_title?文档中是元数据还是文本?
- 如果这是元数据,那么如何指定它?
答:
1赞
Yilmaz
11/18/2023
#1
什么是paper_title?文档中是元数据还是文本?
paper_title
是文档中的列名。您正在通过文档筛选进行搜索'paper_title':'GPT-4 Technical Report'
chromadb
使用 SQLite 来存储所有嵌入。你可以在这里阅读
如果这是元数据,那么如何指定它?
是的,这是元数据,并且来自文档,这是您如何指定的
from langchain.embeddings import OpenAIEmbeddings
from langchain.schema import Document
from langchain.vectorstores import Chroma
docs = [
Document(
page_content="A bunch of scientists bring back dinosaurs and mayhem breaks loose",
metadata={"year": 1993, "rating": 7.7, "genre": "science fiction"},
),
Document(
page_content="Leo DiCaprio gets lost in a dream within a dream within a dream within a ...",
metadata={"year": 2010, "director": "Christopher Nolan", "rating": 8.2},
),
Document(
page_content="A psychologist / detective gets lost in a series of dreams within dreams within dreams and Inception reused the idea",
metadata={"year": 2006, "director": "Satoshi Kon", "rating": 8.6},
),
Document(
page_content="A bunch of normal-sized women are supremely wholesome and some men pine after them",
metadata={"year": 2019, "director": "Greta Gerwig", "rating": 8.3},
),
Document(
page_content="Toys come alive and have a blast doing so",
metadata={"year": 1995, "genre": "animated"},
),
Document(
page_content="Three men walk into the Zone, three men walk out of the Zone",
metadata={
"year": 1979,
"director": "Andrei Tarkovsky",
"genre": "thriller",
"rating": 9.9,
},
),
]
vectorstore = Chroma.from_documents(docs, OpenAIEmbeddings())
评论
0赞
OlgaPp
11/19/2023
我以为 Chroma DB 是一个纯粹的向量存储 -- 如何向其中添加列?谢谢!
1赞
Yilmaz
11/19/2023
Chroma 使用 SQLite 来存储所有文档。docs.trychroma.com/troubleshooting
评论