llamaindex+milvus+metadata filter sample

from llama_index.llms.ollama import Ollama
from llama_index.embeddings.ollama import OllamaEmbedding
from llama_index.core import Settings

llm = Ollama(base_url=“http://170.5.113.113:11434”, model=“qwen2.5:14b”,)
embed_model = OllamaEmbedding(base_url=“http://170.5.113.113:11434”, model_name=“nomic-embed-text:latest”)
Settings.llm = llm
Settings.embed_model = embed_model

from llama_index.core.vector_stores import ExactMatchFilter, MetadataFilters
from llama_index.core.schema import MetadataMode
from llama_index.core import VectorStoreIndex, StorageContext
from llama_index.vector_stores.milvus import MilvusVectorStore
from llama_index.core import SimpleDirectoryReader
from llama_index.core import Document

Load all the two documents loaded before

documents_novel = SimpleDirectoryReader(input_files=[“…/data/paul_graham_essay.txt”]).load_data()

document_with_metadata = [
Document(
text=doc.text,
metadata={
“file_name”: “paul_graham_essay.txt”,
“position”: [“qq”,“ss”],
“department”: [“all”],
“customer”: [“3”,“2”,‘1’],
“customer_department”: [“all”],
},
excluded_llm_metadata_keys=[“file_name”],
metadata_seperator=“::”,
metadata_template=“{key}=>{value}”,
text_template=“Metadata: {metadata_str}\n-----\nContent: {content}”,
) for doc in documents_novel
]

print(“metadata begin.”)
print(document_with_metadata[0].get_content(metadata_mode=MetadataMode.LLM))
print(document_with_metadata[0].get_content(metadata_mode=MetadataMode.EMBED))
print(“metadata end.”)

vector_store = MilvusVectorStore(
uri=“http://180.5.13.113:1530”, collection_name=‘metadata_demo’,dim=768, overwrite=True
)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(document_with_metadata, storage_context)

from llama_index.core.vector_stores import (
MetadataFilters,
MetadataFilter,
FilterOperator,
)

filters = MetadataFilters(
filters=[
MetadataFilter(
key=“position”, operator=FilterOperator.CONTAINS, value=“JAVA”
),
MetadataFilter(
key=“department”, operator=FilterOperator.CONTAINS, value=“all”
),
MetadataFilter(
key=“customer”, operator=FilterOperator.CONTAINS, value=“tj”
),
],
condition_operator=“AND”,
)

print(filters)

query_engine = index.as_query_engine(filters=filters)
res = query_engine.query(
“What challenges did the disease pose for the author?”
)

print(res)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值