Sources by filename if available

pull/264/head
Alex 1 year ago
parent af6f783043
commit bff200fede

@ -158,7 +158,10 @@ def complete_stream(question, docsearch, chat_history, api_key):
p_chat_combine = chat_combine_template.replace("{summaries}", docs_together)
messages_combine = [{"role": "system", "content": p_chat_combine}]
for doc in docs:
data = json.dumps({"type": "source", "doc": doc.page_content})
if doc.metadata:
data = json.dumps({"type": "source", "doc": doc.page_content, "metadata": doc.metadata})
else:
data = json.dumps({"type": "source", "doc": doc.page_content})
yield f"data:{data}\n\n"
if len(chat_history) > 1:
@ -313,7 +316,13 @@ def api_answer():
pass
sources = docsearch.similarity_search(question, k=2)
result['sources'] = [{'title': i.page_content, 'text': i.page_content} for i in sources]
sources_doc = []
for doc in sources:
if doc.metadata:
sources_doc.append({'title': doc.metadata['title'], 'text': doc.page_content})
else:
sources_doc.append({'title': doc.page_content, 'text': doc.page_content})
result['sources'] = sources_doc
# mock result
# result = {

@ -154,7 +154,9 @@ const ConversationBubble = forwardRef<
{sources && openSource !== null && sources[openSource] && (
<div className="ml-8 mt-2 w-3/4 rounded-xl bg-blue-200 p-2">
<p className="w-3/4 truncate text-xs text-gray-500">Source:</p>
<p className="w-3/4 truncate text-xs text-gray-500">
Source: {sources[openSource].title}
</p>
<div className="rounded-xl border-2 border-gray-200 bg-white p-2">
<p className="text-xs text-gray-500 ">

@ -29,11 +29,21 @@ export const fetchAnswer = createAsyncThunk<Answer, { question: string }>(
// set status to 'idle'
dispatch(conversationSlice.actions.setStatus('idle'));
} else if (data.type === 'source') {
const result = data.doc;
// check if data.metadata exists
let result;
if (data.metadata && data.metadata.title) {
const titleParts = data.metadata.title.split('/');
result = {
title: titleParts[titleParts.length - 1],
text: data.doc,
};
} else {
result = { title: data.doc, text: data.doc };
}
dispatch(
updateStreamingSource({
index: state.conversation.queries.length - 1,
query: { sources: [{ title: result, text: result }] },
query: { sources: [result] },
}),
);
} else {
@ -55,10 +65,22 @@ export const fetchAnswer = createAsyncThunk<Answer, { question: string }>(
state.conversation.queries,
);
if (answer) {
let sourcesPrepped = [];
sourcesPrepped = answer.sources.map((source) => {
if (source && source.title) {
const titleParts = source.title.split('/');
return {
...source,
title: titleParts[titleParts.length - 1],
};
}
return source;
});
dispatch(
updateQuery({
index: state.conversation.queries.length - 1,
query: { response: answer.answer, sources: answer.sources },
query: { response: answer.answer, sources: sourcesPrepped },
}),
);
dispatch(conversationSlice.actions.setStatus('idle'));

Loading…
Cancel
Save