1
0
Timothy Jaeryang Baek 1 сар өмнө
parent
commit
c0711ba0c9

+ 5 - 6
backend/open_webui/config.py

@@ -1889,7 +1889,7 @@ CHUNK_OVERLAP = PersistentConfig(
 )
 )
 
 
 DEFAULT_RAG_TEMPLATE = """### Task:
 DEFAULT_RAG_TEMPLATE = """### Task:
-Respond to the user query using the provided context, incorporating inline citations in the format [source_id] **only when the <source_id> tag is explicitly provided** in the context.
+Respond to the user query using the provided context, incorporating inline citations in the format [source_id] **only when the <source> tag includes an explicit id attribute** (e.g., <source id="1">).
 
 
 ### Guidelines:
 ### Guidelines:
 - If you don't know the answer, clearly state that.
 - If you don't know the answer, clearly state that.
@@ -1897,15 +1897,14 @@ Respond to the user query using the provided context, incorporating inline citat
 - Respond in the same language as the user's query.
 - Respond in the same language as the user's query.
 - If the context is unreadable or of poor quality, inform the user and provide the best possible answer.
 - If the context is unreadable or of poor quality, inform the user and provide the best possible answer.
 - If the answer isn't present in the context but you possess the knowledge, explain this to the user and provide the answer using your own understanding.
 - If the answer isn't present in the context but you possess the knowledge, explain this to the user and provide the answer using your own understanding.
-- **Only include inline citations using [source_id] (e.g., [1], [2]) when a `<source_id>` tag is explicitly provided in the context.**
-- Do not cite if the <source_id> tag is not provided in the context.  
+- **Only include inline citations using [source_id] (e.g., [1], [2]) when the <source> tag includes an id attribute.**
+- Do not cite if the <source> tag does not contain an id attribute.  
 - Do not use XML tags in your response.
 - Do not use XML tags in your response.
 - Ensure citations are concise and directly related to the information provided.
 - Ensure citations are concise and directly related to the information provided.
 
 
 ### Example of Citation:
 ### Example of Citation:
-If the user asks about a specific topic and the information is found in "whitepaper.pdf" with a provided <source_id>, the response should include the citation like so:  
-* "According to the study, the proposed method increases efficiency by 20% [whitepaper.pdf]."
-If no <source_id> is present, the response should omit the citation.
+If the user asks about a specific topic and the information is found in a source with a provided id attribute, the response should include the citation like so:  
+* "According to the study, the proposed method increases efficiency by 20% [1]."
 
 
 ### Output:
 ### Output:
 Provide a clear and direct response to the user's query, including inline citations in the format [source_id] only when the <source_id> tag is present in the context.
 Provide a clear and direct response to the user's query, including inline citations in the format [source_id] only when the <source_id> tag is present in the context.

+ 3 - 1
backend/open_webui/utils/middleware.py

@@ -866,7 +866,9 @@ async def process_chat_payload(request, form_data, user, metadata, model):
         for source_idx, source in enumerate(sources):
         for source_idx, source in enumerate(sources):
             if "document" in source:
             if "document" in source:
                 for doc_idx, doc_context in enumerate(source["document"]):
                 for doc_idx, doc_context in enumerate(source["document"]):
-                    context_string += f"<source><source_id>{source_idx + 1}</source_id><source_context>{doc_context}</source_context></source>\n"
+                    context_string += (
+                        f'<source id="{source_idx + 1}">{doc_context}</source>\n'
+                    )
 
 
         context_string = context_string.strip()
         context_string = context_string.strip()
         prompt = get_last_user_message(form_data["messages"])
         prompt = get_last_user_message(form_data["messages"])