paper-qa
paper-qa copied to clipboard
PaperQA doesn't finds evidences from index whith agentic query
Hi,
I provided a set of documents to perform an agentic query. I know there are elements in document set that can be used in answer but it seems paper-qa don't use them and provides an answer based on LLM knowledge although anwer.anser_filter_extra_background is set on True.
Using query method from Doc() object, build with same document set, works.
Here is the verbose return :
No changes to index.
Beginning agent 'ToolSelector' run with question 'Rédigez une synthèse des exemples connus de sépultures
mérovingiennes ou carolingiennes bien datées. Répondez en Français.' and full settings {'llm':
'ollama/dolphin-mixtral:8x7b', 'llm_config': {'model_list': [{'model_name': 'ollama/dolphin-mixtral:8x7b',
'litellm_params': {'model': 'ollama/dolphin-mixtral:8x7b', 'api_type': 'ollama', 'api_base':
'http://localhost:11434', 'stream': True, 'caching': True, 'cache': True, 'mirostat': 0, 'mirostat_eta':
0.1, 'mirostat_tau': 5.0, 'num_ctx': 128000, 'repeat_last_n': 64, 'repeat_penalty': 1.1, 'temperature': 0.2,
'seed': 0, 'tfs_z': 1, 'num_predict': 100000, 'max_tokens': 100000, 'top_k': 20, 'top_p': 0.9, 'min_p':
0.0}}], 'router_kwargs': {'retry_after': 5, 'num_retries': 3, 'timeout': 60.0}}, 'summary_llm':
'ollama/dolphin-mixtral:8x7b', 'summary_llm_config': {'model_list': [{'model_name':
'ollama/dolphin-mixtral:8x7b', 'litellm_params': {'model': 'ollama/dolphin-mixtral:8x7b', 'api_type':
'ollama', 'api_base': 'http://localhost:11434', 'stream': True, 'caching': True, 'cache': True, 'mirostat':
0, 'mirostat_eta': 0.1, 'mirostat_tau': 5.0, 'num_ctx': 128000, 'repeat_last_n': 64, 'repeat_penalty': 1.1,
'temperature': 0.2, 'seed': 0, 'tfs_z': 1, 'num_predict': 100000, 'max_tokens': 100000, 'top_k': 20,
'top_p': 0.9, 'min_p': 0.0}}]}, 'embedding': 'ollama/mxbai-embed-large', 'embedding_config': None,
'temperature': 0.0, 'batch_size': 1, 'texts_index_mmr_lambda': 1.0, 'verbosity': 2, 'answer': {'evidence_k':
5, 'evidence_detailed_citations': True, 'evidence_retrieval': True, 'evidence_summary_length': 'Environs 100
mots.', 'evidence_skip_summary': False, 'answer_max_sources': 3, 'max_answer_attempts': None,
'answer_length': 'Environs 500 mots, mais peut être plus longue si nécessaire.', 'max_concurrent_requests':
1, 'answer_filter_extra_background': True, 'get_evidence_if_no_contexts': True}, 'parsing': {'chunk_size':
7000, 'page_size_limit': 1280000, 'use_doc_details': False, 'overlap': 750, 'citation_prompt': "Fournissez
la citation du texte suivant au format MLA.Ne pas écrire de phrase d'introduction. Si la date de reporting
est consultée, l'année en cours est 2024.{text}Citation:", 'structured_citation_prompt': "Extrayez le titre,
les auteurs et le doi au format JSON de cette citation MLA.Si un champ est introuvable, renvoyez-le comme
null.Utilisez le titre, les auteurs et le doi comme clés, la valeur de l'auteur doit être une liste
d'auteurs.{citation}\n\nCitation JSON:", 'disable_doc_valid_check': True, 'defer_embedding': False,
'chunking_algorithm': <ChunkingOptions.SIMPLE_OVERLAP: 'simple_overlap'>, 'doc_filters': None,
'use_human_readable_clinical_trials': False}, 'prompts': {'summary': " Résumez l’extrait ci-dessous pour
vous aider à répondre à une question.\n\nExtrait de {citation}\n\n----\n\n{text}\n\n----\n\nQuestion:
{question}\n\nNe pas répondre directement à la question, résumez plutôt afin de fournir des éléments aidant
à répondre à la question. Restez précis; rapporter des nombres, des équations ou des citations directes
spécifiques (marquées par des guillemets). Répondez « Non pertinent » si l'extrait n'est pas pertinent. A la
fin de la réponse, fournir un score entier entre 1 et 10 sur une nouvelle ligne indiquant la pertinence par
rapport à la question. Ne pas expliquer le score.\n\nRelevant Résumé des informations ({summary_length}):",
'qa': 'Répondez à la question ci-dessous,en français, avec le contexte.\n\nContexte (with relevance
scores):\n\n{context}\n\n----\n\nQuestion: {question}\n\nEcrire une réponse basée sur le contexte. Si le
contexte ne fournit pas suffisamment d\'informations répondre : "Je ne peux pas répondre."Pour chaque partie
de votre réponse, indiquez par quelles sources elle est justifiée via des citations clé à la fin des
phrases, comme {example_citation}. Ne citez que le contexte ci-dessous et utilisez uniquement les clés
valides. Ecrivez dans le style d\'un article Wikipedia, avec des phrases concises et des paragraphes
cohérents. Le contexte provient de diverses sources et n\'est qu\'un résumé, il peut donc y avoir des
inexactitudes ou des ambiguïtés. Si des guillemets sont présents et pertinents, utilisez les dans la
réponse. Cette réponse ira directement surWikipedia, alors n\'ajoutez aucune information
superflue.\n\nRéponse ({answer_length}):', 'select': "Sélectionnez des documents qui peuvent aider à
répondre à la question ci-dessous. Les articles et documents sont listés comme suit $KEY: $PAPER_INFO.
Retournez une liste de clés, séparées par des virgules. Retournez 'None', si aucun document n'est
utilisable. Choisissez les documents pertinents, provenant de sources fiables, et récentes (si la question
requiert des informations récentes).\n\nQuestion: {question}\n\nDocuments: {papers}\n\nClés séléctionées:",
'pre': None, 'post': None, 'system': "Répondez en Français avec un style direct et concis. Votre public est
expert, alors soyez très précis. S'il existe des termes ou des acronymes ambigus, définissez-les d'abord.",
'use_json': True, 'summary_json': 'Extrait de {citation}\n\n----\n\n{text}\n\n----\n\nQuestion:
{question}\n\n', 'summary_json_system': 'Provide a summary of the relevant information that could help
answer the question based on the excerpt. Respond with the following JSON format:\n\n{{\n "summary":
"...",\n "relevance_score": "..."\n}}\n\nwhere `summary` is relevant information from the text -
{summary_length} words. `relevance_score` is an integer 1-10 for the relevance of `summary` to the
question.\n', 'context_outer': '{context_str}\n\nValid Keys: {valid_keys}', 'context_inner': '{name}:
{text}\nFrom {citation}'}, 'agent': {'agent_llm': 'ollama/dolphin-mixtral:8x7b', 'agent_llm_config':
{'model_list': [{'model_name': 'ollama/dolphin-mixtral:8x7b', 'litellm_params': {'model':
'ollama/dolphin-mixtral:8x7b', 'api_type': 'ollama', 'api_base': 'http://localhost:11434', 'stream': True,
'caching': True, 'cache': True, 'mirostat': 0, 'mirostat_eta': 0.1, 'mirostat_tau': 5.0, 'num_ctx': 128000,
'repeat_last_n': 64, 'repeat_penalty': 1.1, 'temperature': 0.2, 'seed': 0, 'tfs_z': 1, 'num_predict':
100000, 'max_tokens': 100000, 'top_k': 20, 'top_p': 0.9, 'min_p': 0.0}}]}, 'agent_type': 'ToolSelector',
'agent_config': None, 'agent_system_prompt': 'You are a helpful AI assistant.', 'agent_prompt': 'Use the
tools to answer the question: {question}\n\nWhen the answer looks sufficient, you can terminate by calling
the {complete_tool_name} tool. If the answer does not look sufficient, and you have already tried to answer
several times with different evidence, terminate by calling the {complete_tool_name} tool. The current
status of evidence/papers/cost is {status}', 'return_paper_metadata': False, 'search_count': 8,
'wipe_context_on_answer_failure': True, 'agent_evidence_n': 1, 'timeout': 500.0, 'should_pre_search': True,
'tool_names': None, 'max_timesteps': None, 'index': {'name': 'index2', 'paper_directory': './Papers/ToAdd',
'manifest_file': './Manifest.csv', 'index_directory': './indexes', 'use_absolute_paper_directory': False,
'recurse_subdirectories': True, 'concurrency': 1, 'sync_with_paper_directory': True}}, 'md5':
'2378ad36539c45224df50b1c1ca1413c'}.
[13:36:20] Found manifest file at Manifest.csv, read 7 records from it, which maps to 7 locations.
No changes to index.
[13:36:27] Resetting 'Rédigez une synthèse des exemples connus de sépultures mérovingiennes ou carolingiennes bien
datées. Répondez en Français.'.
[13:36:33] Resetting 'Rédigez une synthèse des exemples connus de sépultures mérovingiennes ou carolingiennes bien
datées. Répondez en Français.'.
[13:36:39] Resetting 'Rédigez une synthèse des exemples connus de sépultures mérovingiennes ou carolingiennes bien
datées. Répondez en Français.'.
[13:36:45] Resetting 'Rédigez une synthèse des exemples connus de sépultures mérovingiennes ou carolingiennes bien
datées. Répondez en Français.'.
[13:44:40] Agent timeout after 500.0-sec, just answering.
Generating answer for 'Rédigez une synthèse des exemples connus de sépultures mérovingiennes ou
carolingiennes bien datées. Répondez en Français.'.
[13:46:44] Status: Paper Count=0 | Relevant Papers=0 | Current Evidence=0 | Current Cost=$0.0000
Finished agent 'ToolSelector' run with question 'Rédigez une synthèse des exemples connus de sépultures
mérovingiennes ou carolingiennes bien datées. Répondez en Français.' and status truncated.
agent_response: session=PQASession(id=UUID('9e2f4825-0a2b-4dd6-91ff-07e90196d55a'), question='Rédigez une
synthèse des exemples connus de sépultures mérovingiennes ou carolingiennes bien datées. Répondez en
Français.', answer=" Les sépultures mérovingiennes et carolingiennes bien datées offrent un aperçu précieux
de la vie et des coutumes funéraires de ces périodes historiques. Parmi les exemples notables, on trouve le
cimetière de Sainte-Colombe-sur-Loire , le site de Charnay (Example2015Example page 7) et la nécropole de
Goudelancourt-lès-Pierrepont (Example2018Example page 5).\n\nLe cimetière de Sainte-Colombe-sur-Loire, situé
dans le département du Jura en France, est un exemple remarquable de sépulture mérovingienne. Les tombes
présentes sur ce site ont été datées grâce à des objets funéraires tels que des fibules et des boucles
d'oreilles en or (Example2012Example page 4). Ces artefacts, associés aux techniques archéologiques
modernes, ont permis de dater les sépultures avec une grande précision.\n\nLe site de Charnay, situé dans le
département de Saône-et-Loire en France, est un autre exemple notable de sépulture mérovingienne. Les tombes
présentes sur ce site ont été datées grâce à des objets funéraires tels que des fibules et des boucles
d'oreilles en or (Example2015Example page 7). Ces artefacts, associés aux techniques archéologiques
modernes, ont permis de dater les sépultures avec une grande précision.\n\nLa nécropole de
Goudelancourt-lès-Pierrepont, située dans le département de l'Aisne en France, est un exemple notable de
sépulture carolingienne. Les tombes présentes sur ce site ont été datées grâce à des objets funéraires tels
que des fibules et des boucles d'oreilles en or (Example2018Example page 5). Ces artefacts, associés aux
techniques archéologiques modernes, ont permis de dater les sépultures avec une grande précision.\n\nEn
résumé, les exemples de sépultures mérovingiennes et carolingiennes bien datées incluent le cimetière de
Sainte-Colombe-sur-Loire, le site de Charnay et la nécropole de Goudelancourt-lès-Pierrepont. Ces sites ont
été datés grâce à des objets funéraires tels que des fibules et des boucles d'oreilles en or, ainsi qu'à
l'utilisation de techniques archéologiques modernes.", has_successful_answer=None, context='\n\nValid Keys:
', contexts=[], references='', formatted_answer="Question: Rédigez une synthèse des exemples connus de
sépultures mérovingiennes ou carolingiennes bien datées. Répondez en Français.\n\n Les sépultures
mérovingiennes et carolingiennes bien datées offrent un aperçu précieux de la vie et des coutumes funéraires
de ces périodes historiques. Parmi les exemples notables, on trouve le cimetière de Sainte-Colombe-sur-Loire
, le site de Charnay (Example2015Example page 7) et la nécropole de Goudelancourt-lès-Pierrepont
(Example2018Example page 5).\n\nLe cimetière de Sainte-Colombe-sur-Loire, situé dans le département du Jura
en France, est un exemple remarquable de sépulture mérovingienne. Les tombes présentes sur ce site ont été
datées grâce à des objets funéraires tels que des fibules et des boucles d'oreilles en or
(Example2012Example page 4). Ces artefacts, associés aux techniques archéologiques modernes, ont permis de
dater les sépultures avec une grande précision.\n\nLe site de Charnay, situé dans le département de
Saône-et-Loire en France, est un autre exemple notable de sépulture mérovingienne. Les tombes présentes sur
ce site ont été datées grâce à des objets funéraires tels que des fibules et des boucles d'oreilles en or
(Example2015Example page 7). Ces artefacts, associés aux techniques archéologiques modernes, ont permis de
dater les sépultures avec une grande précision.\n\nLa nécropole de Goudelancourt-lès-Pierrepont, située dans
le département de l'Aisne en France, est un exemple notable de sépulture carolingienne. Les tombes présentes
sur ce site ont été datées grâce à des objets funéraires tels que des fibules et des boucles d'oreilles en
or (Example2018Example page 5). Ces artefacts, associés aux techniques archéologiques modernes, ont permis
de dater les sépultures avec une grande précision.\n\nEn résumé, les exemples de sépultures mérovingiennes
et carolingiennes bien datées incluent le cimetière de Sainte-Colombe-sur-Loire, le site de Charnay et la
nécropole de Goudelancourt-lès-Pierrepont. Ces sites ont été datés grâce à des objets funéraires tels que
des fibules et des boucles d'oreilles en or, ainsi qu'à l'utilisation de techniques archéologiques
modernes.\n", graded_answer=None, cost=0.0, token_counts={'ollama/dolphin-mixtral:8x7b': [4583, 639]},
config_md5='6fba9178baa575eeb37c32ed6a1a3fbd', tool_history=[['reset'], ['reset'], ['reset'], ['reset'],
['gen_answer']], used_contexts={'Example2018Example page 5', 'Example2015Example page 7',
'Example2012Example page 4'}) bibtex=None status=<AgentStatus.TRUNCATED: 'truncated'> timing_info=None
duration=0.0 stats=None
Answer: Les sépultures mérovingiennes et carolingiennes bien datées offrent un aperçu précieux de la vie et
des coutumes funéraires de ces périodes historiques. Parmi les exemples notables, on trouve le cimetière de
Sainte-Colombe-sur-Loire , le site de Charnay (Example2015Example page 7) et la nécropole de
Goudelancourt-lès-Pierrepont (Example2018Example page 5).
Le cimetière de Sainte-Colombe-sur-Loire, situé dans le département du Jura en France, est un exemple
remarquable de sépulture mérovingienne. Les tombes présentes sur ce site ont été datées grâce à des objets
funéraires tels que des fibules et des boucles d'oreilles en or (Example2012Example page 4). Ces artefacts,
associés aux techniques archéologiques modernes, ont permis de dater les sépultures avec une grande
précision.
Le site de Charnay, situé dans le département de Saône-et-Loire en France, est un autre exemple notable de
sépulture mérovingienne. Les tombes présentes sur ce site ont été datées grâce à des objets funéraires tels
que des fibules et des boucles d'oreilles en or (Example2015Example page 7). Ces artefacts, associés aux
techniques archéologiques modernes, ont permis de dater les sépultures avec une grande précision.
La nécropole de Goudelancourt-lès-Pierrepont, située dans le département de l'Aisne en France, est un
exemple notable de sépulture carolingienne. Les tombes présentes sur ce site ont été datées grâce à des
objets funéraires tels que des fibules et des boucles d'oreilles en or (Example2018Example page 5). Ces
artefacts, associés aux techniques archéologiques modernes, ont permis de dater les sépultures avec une
grande précision.
En résumé, les exemples de sépultures mérovingiennes et carolingiennes bien datées incluent le cimetière de
Sainte-Colombe-sur-Loire, le site de Charnay et la nécropole de Goudelancourt-lès-Pierrepont. Ces sites ont
été datés grâce à des objets funéraires tels que des fibules et des boucles d'oreilles en or, ainsi qu'à
l'utilisation de techniques archéologiques modernes.
Any solution ?
Best regards
It seems like the paper-qa system is not retrieving evidence from the indexed documents and is instead relying on LLM knowledge. Here are a few things you might want to check or try:
-
Evidence Retrieval Setting: Ensure that the
evidence_retrievalsetting is set toTrue, which it seems to be from your configuration. This setting allows the system to use retrieval methods instead of processing all documents [1]. -
Index Status: The log mentions "No changes to index." Make sure that the documents are correctly indexed and that the index is up-to-date. You might want to re-index the documents to ensure they are available for retrieval.
-
Document Relevance: Check if the documents in the index are relevant to the query. The system might not find them relevant enough to use as evidence. You can adjust the
texts_index_mmr_lambdaor other relevance settings to see if it affects the retrieval. -
Verbose Logs: Increase the verbosity of the logs to get more detailed information about why the documents are not being used. This might provide insights into any issues with the document selection process.
-
Agent Configuration: Review the
ToolSelectoragent configuration to ensure it is set up correctly to select and use the indexed documents. There might be specific settings or conditions that need adjustment. -
Timeouts and Resets: The logs show multiple resets and a timeout. This might indicate an issue with the query processing or document retrieval. Check if there are any constraints or limits that might be causing these resets.
By addressing these areas, you might be able to resolve the issue and ensure that the system uses the indexed documents for evidence retrieval.
To continue talking to Dosu, mention @dosu.
Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other
How setting up a ToolsSelector agent correctly ?
@Dosu.
To set up a ToolSelector agent correctly in the paper-qa system, you need to configure several key settings within the AgentSettings class. Here are the main configuration options you should consider:
-
Agent Type: Ensure that the
agent_typeis set to"ToolSelector". -
Agent LLM: Specify the language model to use with
agent_llm. For example,"gpt-4o-2024-08-06". -
Agent LLM Configuration: Use
agent_llm_configto provide additional configuration for the language model, such as a list of models and router settings. -
Prompts: Customize the
agent_system_promptandagent_promptto guide the agent's behavior and responses. -
Evidence and Search Settings:
return_paper_metadata: Set toTrueif you want to include paper metadata in search results.search_count: Adjust the number of search results to return, default is8.agent_evidence_n: Set the number of top-ranked evidences to show to the agent, default is1.
-
Timeout and Context Management:
timeout: Set the maximum execution time for the agent, default is500.0seconds.wipe_context_on_answer_failure: Ensure this isTrueto reset context if answer generation fails.
-
Index and Concurrency:
index_concurrency: Set the number of concurrent filesystem reads for indexing, default is5.rebuild_index: Set toTrueto rebuild the index at the start of agent runners.
-
Callbacks: Define any necessary callbacks in the
callbackssetting to handle specific stages of the agent's operation.
By configuring these settings, you can tailor the ToolSelector agent to effectively interact with your document index and retrieve relevant information for your queries [1].
To continue talking to Dosu, mention @dosu.
Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other
What are default tools for ToolSelector ?
What is the difference between ToolSelector anbd Fake agents ?
@dosu.
I couldn't find specific information about the default tools configured for the ToolSelector agent in the paper-qa system [1]. However, the ToolSelector agent is designed to manage the process of answering questions by searching for papers, gathering evidence, and collecting papers cited in the evidence [1].
Regarding the differences between the ToolSelector and Fake agents:
-
ToolSelector Agent: This agent is designed to intelligently manage the process of answering questions by searching for relevant papers, gathering evidence, and ensuring that sufficient evidence is collected to generate a good answer. It uses a language model to guide its operations and can perform multiple search attempts to gather evidence from various sources [1].
-
Fake Agent: The
Fakeagent is a deterministic agent that invokes tools in a specific, predefined order without any decision-making logic. It is primarily used for testing or baseline comparison purposes, as it does not involve complex decision-making or learning processes. TheFakeagent executes a series of steps using available tools and ignores settings likemax_timesteps[2][3].
These differences highlight the ToolSelector agent's focus on dynamic evidence gathering and decision-making, while the Fake agent provides a straightforward, deterministic sequence of actions.
To continue talking to Dosu, mention @dosu.
Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other
Seems working with 'fake' agent :
async def ask_question(settings) -> None:
answer_response = await agent_query(
query="Rédigez une synthèse des exemples connus de sépultures mérovingiennes ou carolingiennes bien datées. Répondez en Français.",
settings=settings,
agent_type='fake',
)
print(answer_response.session)
but fails with 'ToolSelector' agent that is supposed better...
How can I fix this ?
@Dosu.
The issue you're experiencing with the ToolSelector agent not performing as expected, while the Fake agent works, could be due to several factors related to the configuration and operation of the ToolSelector. Here are some steps to help resolve the issue:
-
Configuration Review: Double-check the configuration settings for the
ToolSelectoragent. Ensure that all necessary parameters are correctly set, especially those related to evidence retrieval and indexing. TheToolSelectoragent relies on these settings to function optimally. -
Indexing and Document Relevance: Make sure that the documents are properly indexed and that the index is up-to-date. The
ToolSelectoragent might not be finding relevant documents if the index is not correctly configured or if the documents are not deemed relevant enough. You might need to adjust relevance settings or re-index the documents. -
Timeout and Resets: The logs indicate multiple resets and a timeout. This could suggest issues with query processing or document retrieval. Check if there are any constraints or limits causing these resets, and consider increasing the timeout if necessary.
-
Verbose Logging: Increase the verbosity of the logs to gain more insights into the agent's decision-making process. This can help identify why the
ToolSelectoragent is not using the indexed documents effectively. -
Agent-Specific Settings: Ensure that the
ToolSelectoragent's specific settings, such asagent_evidence_n,search_count, andwipe_context_on_answer_failure, are configured to support effective evidence retrieval and context management.
By addressing these areas, you should be able to improve the performance of the ToolSelector agent and ensure it utilizes the indexed documents effectively for evidence retrieval.
To continue talking to Dosu, mention @dosu.
Help Dosu learn! Give it feedback: Great Response | Irrelevant Answer | Incorrect Sources | Too Verbose | Hallucination | Bug Report | Other