Spaces:
Sleeping
Sleeping
File size: 2,639 Bytes
b3fc90b 82fdbb3 b579ccf b3fc90b 06c3202 b3fc90b fc9b84e 06c3202 203a4b1 f282311 23e9e9c b3fc90b 1fac75f b3fc90b 0cd2aee 1fdcae0 8f62329 b579ccf 5794520 b579ccf 8f62329 b579ccf b3fc90b 1fdcae0 b3fc90b 315794b 06c3202 b3fc90b 06c3202 c605c03 b3fc90b c99c9ac b3fc90b b579ccf 7929d48 16ada75 7929d48 16ada75 6ca39c0 6afbc36 b3fc90b a91dc62 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
import json
from services.qa_service.utils import format_prompt
class QAService:
def __init__(self, conf, pinecone, model_pipeline, question, goals, session_key, keycheck):
self.conf = conf
print(keycheck)
if keycheck:
self.sess_key = session_key
self.pinecones = pinecone.run(namespace=self.sess_key)
else:
self.sess_key = self.conf["embeddings"]["demo_namespace"]
self.pinecones = pinecone.run(namespace=self.sess_key)
self.pc = self.pinecones['connection']
self.embedder = self.pinecones['embedder']
self.model_pipeline = model_pipeline
self.question = question
self.goals = goals
def __enter__(self):
print("Start Q&A Service")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Exiting Q&A Service")
def parse_results(self, result):
print("Parsing results")
parsed = []
for i in result['matches']:
collect = i['metadata']['_node_content']
content = json.loads(collect)
parsed.append({
"speakers": content["metadata"]["speakers"],
"text": content["text"]
})
return parsed
def retrieve_context(self):
"""Pass embedded question into pinecone"""
print("Retrieving context")
embedded_query = self.embedder.get_text_embedding(self.question)
print("session key: "+self.sess_key)
print("index name: "+self.conf['embeddings']['index_name'])
index = self.pc.Index(self.conf['embeddings']['index_name'])
result = index.query(
vector=embedded_query,
namespace=self.sess_key, # I think namespace comes somewhere here during querying!!!
top_k=self.conf["embeddings"]["examples"],
include_values=False,
include_metadata=True
)
output = self.parse_results(result)
return output
def run(self):
"""Query pinecone outputs and infer results"""
full_context = self.retrieve_context()
transcript_count = len(full_context)
context = ""
for i in range(transcript_count):
context += "Transcript snippet %s" % (i + 1)
context += "\n"
context += full_context[i]["text"]
if (i+1) < transcript_count:
context += "\n\n"
prompt = format_prompt(self.question, context)
output = self.model_pipeline.infer(prompt)
return output, context
|