The Retrieval class provides methods for querying documents using natural language. It leverages embedded documents to perform semantic search and return relevant information.
The natural language response generated from relevant documents
Example:
from avenieca.api.model import RetrievalRequestretrieval = RetrievalRequest( query="what is the temperature on 3rd of may at around 1pm?")res, status = eca.retrieval.query(data=retrieval)if status == 200: print(f"Response: {res.response}")
import osfrom avenieca.api.eca import ECAfrom avenieca.api.model import Config, DocumentInsert, RetrievalRequest# Initialize clientconfig = Config( uri="http://localhost:2580/v1", username=os.getenv("USERNAME"), password=os.getenv("PASSWORD"))eca = ECA(config)# Step 1: Create and embed documentsdocuments = [ DocumentInsert( doc_id="temp_001", text="On May 3rd at 1:00 PM, the temperature was 24°C.", embed=True ), DocumentInsert( doc_id="temp_002", text="On May 3rd at 2:00 PM, the temperature rose to 26°C.", embed=True ), DocumentInsert( doc_id="temp_003", text="On May 4th at 1:00 PM, the temperature was 22°C.", embed=True )]for doc in documents: res, status = eca.document.create(data=doc) print(f"Created document: {doc.doc_id}")# Step 2: Query the documentsretrieval = RetrievalRequest( query="what is the temperature on 3rd of may at around 1pm?")res, status = eca.retrieval.query(data=retrieval)if status == 200: print(f"\nQuery: {retrieval.query}") print(f"Response: {res.response}")else: print(f"Error: {res}")
retrieval = RetrievalRequest( query="How do I configure the air conditioner for optimal energy efficiency?")res, status = eca.retrieval.query(data=retrieval)print(res.response)
retrieval = RetrievalRequest( query="What were the occupancy levels last Tuesday afternoon?")res, status = eca.retrieval.query(data=retrieval)print(res.response)
retrieval = RetrievalRequest( query="Why is the air quality index showing high values?")res, status = eca.retrieval.query(data=retrieval)print(res.response)
# Good: Structured, specific informationgood_doc = DocumentInsert( doc_id="hvac_guide_001", text="""Air Conditioner Maintenance Schedule: - Monthly: Clean or replace air filters - Quarterly: Check refrigerant levels - Annually: Professional inspection Optimal temperature setting: 22-24°C for energy efficiency.""", embed=True)# Less effective: Vague, unstructuredbad_doc = DocumentInsert( doc_id="hvac_guide_002", text="You should maintain your AC sometimes. Check things.", embed=True)
You can create documents from ESS or Sequences to enable retrieval on your state data:
# Create document from an ESSdoc_res, doc_status = eca.document.create_from_ess( module_id="air_conditioner", ess_id=8)# Embed it for retrievalembed_res, embed_status = eca.document.embed(db_id=doc_res.id)# Now you can query itretrieval = RetrievalRequest( query="What was the air conditioner state?")res, status = eca.retrieval.query(data=retrieval)print(res.response)