from netra import workflow, SpanWrapper
@workflow()
def semantic_search(client, class_name: str, query: str, limit: int = 5):
span = SpanWrapper("weaviate-search", {
"class.name": class_name,
"query": query,
"limit": limit
}).start()
results = (
client.query
.get(class_name, ["title", "content"])
.with_near_text({"concepts": [query]})
.with_limit(limit)
.with_additional(["distance"])
.do()
)
count = len(results.get("data", {}).get("Get", {}).get(class_name, []))
span.set_attribute("results.count", count)
span.end()
return results