Find answers from the community

Updated 3 months ago

RagDatasetGenerator to create questions in other languages than English

how can you use RagDatasetGenerator to create questions in other languages than English?
e
a
9 comments
Reading the code for RagDatasetGenerator ( https://github.com/run-llama/llama_index/blob/0ae69d46e3735a740214c22a5f72e05d46d92635/llama-index-core/llama_index/core/llama_dataset/generator.py#L240 ), there is a

Plain Text
DEFAULT_QUESTION_GENERATION_PROMPT = """\
Context information is below.
---------------------
{context_str}
---------------------
Given the context information and not prior knowledge.
generate only questions based on the below query.
{query_str}
"""
I changed the prompt for a Spanish variant:
Plain Text
spanish_question_generation_prompt = """\
La información de contexto está debajo.
---------------------
{context_str}
---------------------
Dada la información de contexto y sin conocimientos previos, 
genere solo preguntas en español basadas en la siguiente consulta.
{query_str}
"""


And called it like this:

Plain Text
dataset_generator = RagDatasetGenerator.from_documents(
    documents,
    llm=llm,
    text_question_template=spanish_question_generation_prompt,
    num_questions_per_chunk=2,  # set the number of questions per nodes
    show_progress=True,
)
If I comment the text_question_template, it creates the output in English. If I uncomment it pass the spanish_question_generation_prompt, then it fails withAttributeError: 'str' object has no attribute 'partial_format'
Unfortunately, the imports have changed and it no longer works. So far, I've tried:

Plain Text
from llama_index.core.prompts.base import PromptTemplate


spanish_text_question_generation_template = PromptTemplate((
"""    
La información de contexto está a continuación.
---------------------
{context_str}
---------------------
Dada la información de contexto y sin conocimientos previos, 
genere solo preguntas en español basadas en la siguiente consulta.
{query_str}
"""
))

spanish_text_qa_template = PromptTemplate((
"""
La información de contexto está a continuación.
---------------------
{context_str}
---------------------
Dada la información de contexto y sin conocimientos previos, 
responda en español a la siguiente consulta.
{query_str}
"""
))

spanish_question_gen_query = PromptTemplate((
"""
Usted es un profesor/docente.
Su tarea consiste en crear {num_questions_per_chunk} preguntas para un cuestionario/examen cercano.
Las preguntas deben ser de naturaleza diversa en todo el documento.
Limite las preguntas a la información contextual proporcionada.
"""
))

But I am getting error: AttributeError: 'PromptTemplate' object has no attribute 'query_str'
I had a brief conversation with kapa but the error persists. I don't know why, when I am passing custom QA variables for Spanish, the placeholders are not replaced by the actual queries and contexts https://discord.com/channels/1059199217496772688/1215169495648305193
I got it! I was reviewing the code and just realized that question_gen_query is a str, not a PromptTemplate:

Plain Text
text_question_template: Optional[BasePromptTemplate] = None,
        text_qa_template: Optional[BasePromptTemplate] = None,
        question_gen_query: Optional[str] = None,


So this code now works:

Plain Text
spanish_text_question_generation_template = PromptTemplate(
"""    
La información de contexto está a continuación.
---------------------
{context_str}
---------------------
Dada la información de contexto y sin conocimientos previos, 
genere solo preguntas en español basadas en la siguiente consulta.
{query_str}
"""
)

spanish_text_qa_template = PromptTemplate(
"""
La información de contexto está a continuación.
---------------------
{context_str}
---------------------
Dada la información de contexto y sin conocimientos previos, 
responda en español a la siguiente consulta.
{query_str}
"""
)

spanish_question_gen_query = """
Usted es un profesor/docente hispanohablante.
Su tarea consiste en crear {num_questions_per_chunk} preguntas para un cuestionario/examen cercano.
Las preguntas deben ser de naturaleza diversa en todo el documento.
Limite las preguntas a la información contextual proporcionada.
"""




dataset_generator = RagDatasetGenerator.from_documents(
    documents,
    llm=llm,
    text_question_template=spanish_text_question_generation_template,
    text_qa_template=spanish_text_qa_template,
    question_gen_query=spanish_question_gen_query,
    num_questions_per_chunk=2,  # set the number of questions per nodes
    show_progress=True,
)


🙂
I wonder if there's a way to adapt a language like in ragas without modifying the prompt template or message.
That’s a good question, but I am looking for alternatives to RAGAS overall
Add a reply
Sign up and join the conversation on Discord