国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

RAG高級優(yōu)化:基于問題生成的文檔檢索增強(qiáng) 原創(chuàng)

發(fā)布于 2024-9-14 14:18
瀏覽
0收藏

我們將在本文中介紹一種文本增強(qiáng)技術(shù),該技術(shù)利用額外的問題生成來改進(jìn)矢量數(shù)據(jù)庫中的文檔檢索。通過生成和合并與每個(gè)文本片段相關(guān)的問題,增強(qiáng)系統(tǒng)標(biāo)準(zhǔn)檢索過程,從而增加了找到相關(guān)文檔的可能性,這些文檔可以用作生成式問答的上下文。

實(shí)現(xiàn)步驟

通過用相關(guān)問題豐富文本片段,我們的目標(biāo)是顯著提高識(shí)別文檔中包含用戶查詢答案的最相關(guān)部分的準(zhǔn)確性。具體的方案實(shí)現(xiàn)一般包含以下步驟:

  • 文檔解析和文本分塊:處理PDF文檔并將其劃分為可管理的文本片段。
  • 問題增強(qiáng):使用語言模型在文檔和片段級別生成相關(guān)問題。
  • 矢量存儲(chǔ)創(chuàng)建:使用??向量模型?計(jì)算文檔的嵌入,并創(chuàng)建FAISS矢量存儲(chǔ)。
  • 檢索和答案生成:使用FAISS查找最相關(guān)的文檔,并根據(jù)提供的上下文生成答案。

我們可以通過設(shè)置,指定在文檔級或片段級進(jìn)行問題增強(qiáng)。

class QuestionGeneration(Enum):
    """
    Enum class to specify the level of question generation for document processing.


    Attributes:
        DOCUMENT_LEVEL (int): Represents question generation at the entire document level.
        FRAGMENT_LEVEL (int): Represents question generation at the individual text fragment level.
    """
    DOCUMENT_LEVEL = 1
    FRAGMENT_LEVEL = 2


RAG高級優(yōu)化:基于問題生成的文檔檢索增強(qiáng)-AI.x社區(qū)


方案實(shí)現(xiàn)

問題生成

def generate_questions(text: str) -> List[str]:
    """
    Generates a list of questions based on the provided text using OpenAI.


    Args:
        text (str): The context data from which questions are generated.


    Returns:
        List[str]: A list of unique, filtered questions.
    """
    llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
    prompt = PromptTemplate(
        input_variables=["context", "num_questions"],
        template="Using the context data: {context}\n\nGenerate a list of at least {num_questions} "
                 "possible questions that can be asked about this context. Ensure the questions are "
                 "directly answerable within the context and do not include any answers or headers. "
                 "Separate the questions with a new line character."
    )
    chain = prompt | llm.with_structured_output(QuestionList)
    input_data = {"context": text, "num_questions": QUESTIONS_PER_DOCUMENT}
    result = chain.invoke(input_data)
    
    # Extract the list of questions from the QuestionList object
    questions = result.question_list
    
    filtered_questions = clean_and_filter_questions(questions)
    return list(set(filtered_questions))

處理主流程

def process_documents(content: str, embedding_model: OpenAIEmbeddings):
    """
    Process the document content, split it into fragments, generate questions,
    create a FAISS vector store, and return a retriever.


    Args:
        content (str): The content of the document to process.
        embedding_model (OpenAIEmbeddings): The embedding model to use for vectorization.


    Returns:
        VectorStoreRetriever: A retriever for the most relevant FAISS document.
    """
    # Split the whole text content into text documents
    text_documents = split_document(content, DOCUMENT_MAX_TOKENS, DOCUMENT_OVERLAP_TOKENS)
    print(f'Text content split into: {len(text_documents)} documents')


    documents = []
    counter = 0
    for i, text_document in enumerate(text_documents):
        text_fragments = split_document(text_document, FRAGMENT_MAX_TOKENS, FRAGMENT_OVERLAP_TOKENS)
        print(f'Text document {i} - split into: {len(text_fragments)} fragments')
        
        for j, text_fragment in enumerate(text_fragments):
            documents.append(Document(
                page_cnotallow=text_fragment,
                metadata={"type": "ORIGINAL", "index": counter, "text": text_document}
            ))
            counter += 1
            
            if QUESTION_GENERATION == QuestionGeneration.FRAGMENT_LEVEL:
                questions = generate_questions(text_fragment)
                documents.extend([
                    Document(page_cnotallow=question, metadata={"type": "AUGMENTED", "index": counter + idx, "text": text_document})
                    for idx, question in enumerate(questions)
                ])
                counter += len(questions)
                print(f'Text document {i} Text fragment {j} - generated: {len(questions)} questions')
        
        if QUESTION_GENERATION == QuestionGeneration.DOCUMENT_LEVEL:
            questions = generate_questions(text_document)
            documents.extend([
                Document(page_cnotallow=question, metadata={"type": "AUGMENTED", "index": counter + idx, "text": text_document})
                for idx, question in enumerate(questions)
            ])
            counter += len(questions)
            print(f'Text document {i} - generated: {len(questions)} questions')


    for document in documents:
        print_document("Dataset", document)


    print(f'Creating store, calculating embeddings for {len(documents)} FAISS documents')
    vectorstore = FAISS.from_documents(documents, embedding_model)


    print("Creating retriever returning the most relevant FAISS document")
    return vectorstore.as_retriever(search_kwargs={"k": 1})

該技術(shù)為提高基于向量的文檔檢索系統(tǒng)的信息檢索質(zhì)量提供了一種方法。此實(shí)現(xiàn)使用了大模型的API,這可能會(huì)根據(jù)使用情況產(chǎn)生成本。


本文轉(zhuǎn)載自公眾號(hào)哎呀AIYA

原文鏈接:??https://mp.weixin.qq.com/s/bjI02uOeAGXSelCApb0yOQ??



?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
標(biāo)簽
已于2024-9-14 14:18:55修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
久久亚洲影音av资源网| 一区不卡字幕| 蜜桃精品在线| 一本大道综合伊人精品热热| 青青青在线观看视频| 亚洲欧洲一区| 国产精品av在线播放| 欧美与亚洲与日本直播| 91精品国产欧美一区二区18| 日本女优天堂99伊人| 91麻豆高清视频| 一区二区三区四区视频在线观看| 欧美在线观看视频一区| 久久久免费高清电视剧观看| 韩日一区二区| 亚洲美女性生活视频| 国产高清在线a视频大全| 欧美日韩精品一区视频| 精品久久av| 精品日本美女福利在线观看| 国产天堂在线观看| 久久久久久久网| 国产男女免费视频| 蜜臀av在线播放一区二区三区| 国产一区二区三区色淫影院| 欧美wwwww| 国产精品久久久久久久久| 欧美a在线观看| 久久精品美女视频网站| 国产精品扒开腿做爽爽爽视频软件| 亚洲成成品网站| 国产桃色电影在线播放| 日韩欧美一级精品久久| 婷婷av在线| 亚洲精品成人网| 中文在线资源| 伊人久久男人天堂| 国产精品一区二区免费福利视频 | 黄色小说在线播放| 欧美一级电影网站| 俺来也官网欧美久久精品| 亚洲福利视频在线| 小早川怜子影音先锋在线观看| 91精品国产一区二区| 电影k8一区二区三区久久| 亚洲美女激情视频| 精品国产亚洲日本| 97视频免费观看| 日韩久久精品网| 国产成人精品自拍| 美女网站色91| 日本中文字幕网址| 亚洲一区中文日韩| 麻豆传媒在线观看| 亚洲免费电影一区| 一区二区三区视频免费视频观看网站 | 日韩av中文字幕一区二区三区| 日韩精品一区二区三区四区五区| 黑人精品欧美一区二区蜜桃| 免费在线a视频| 国产精品成人网| 在线观看免费国产小视频| 欧美日韩成人高清| 成人性生活视频| 国模叶桐国产精品一区| 欧美午夜一区二区福利视频| 91免费网站视频| 亚洲欧洲国产日本综合| 麻豆系列在线观看| 中文字幕日韩在线视频| 日韩精品免费一区二区夜夜嗨| 国产成人免费电影| 不卡高清视频专区| 三级在线观看| 最好看的2019年中文视频| 日本欧美国产| 日韩成人午夜影院| 午夜精品免费在线| 欧美黑人疯狂性受xxxxx野外| 日本一区二区在线播放| 久久精品国产免费| 高清av影院| 亚洲成成品网站| 日韩有码一区| 日韩视频专区| 依依成人精品视频| 日韩精品av| 国产综合在线观看视频| 国产寡妇亲子伦一区二区| 中文字幕在线免费播放| 一区二区在线视频播放| 欧美日韩18| 琪琪五月天综合婷婷| 精品福利一二区| 日韩一级毛片| www.玖玖玖| 欧美一区二区久久| av一区二区在线播放| 秋霞无码一区二区| 欧美日韩另类国产亚洲欧美一级| 成人免费在线电影网| 中国成人亚色综合网站| 高跟丝袜一区二区三区| 欧美三级电影网址| 欧美日韩在线一二三| 亚洲色图.com| 久久亚洲资源中文字| 久久久精品有限公司| 亚洲一区二区美女| 欧美午夜网站| 一道精品一区二区三区| 日本韩国欧美在线| 最新精品国偷自产在线| 你懂的av在线| 亚洲经典中文字幕| 亚洲午夜黄色| 在线成人动漫| 青青草99啪国产免费| av在线不卡网| 最新欧美色图| 欧美日韩中文国产一区发布| 午夜电影网一区| 亚洲理论电影片| 成人久久久久久久久| 亚洲小视频在线观看| 日本美女一区二区三区视频| 999在线视频| 91麻豆精品秘密入口| 一级中文字幕一区二区| 欧美亚洲国产日韩| 日本va中文字幕| 另类图片亚洲另类| 91网址在线看| 91成人在线| 日韩精品在线视频免费观看| 亚洲第一页在线| 日本不卡不码高清免费观看| 日本精品在线| 久久久久久久久久久久久久一区| 色婷婷亚洲综合| 欧美日韩国产在线一区| 国产资源在线看| 国产精品初高中精品久久| 欧美香蕉大胸在线视频观看| 国产精品福利在线观看播放| 久草网在线视频| 91精品久久久久久综合乱菊| 亚洲精品国产无天堂网2021| 亚洲人成网www| 亚洲永久精品免费| 国产美女久久精品| 午夜精品aaa| 欧美暴力喷水在线| 在线免费看黄| 日本一区二区在线视频| 亚洲国产精品久久| 国产成人综合亚洲91猫咪| 激情亚洲影院在线观看| 蜜臀av午夜一区二区三区| 久久久人成影片一区二区三区| 一区在线播放视频| 99re6这里只有精品| 国产精品免费观看| 五码日韩精品一区二区三区视频| 日韩av中文字幕在线免费观看 | 国产情侣久久| av免费网站在线| 91xxx视频| 久久91亚洲精品中文字幕| 亚洲精品视频在线看| 成人午夜国产| 麻豆传媒在线免费看| 视频在线精品一区| 久久影院在线观看| 亚洲午夜国产一区99re久久| 欧美日韩第一区| 欧美片第1页| 成人精品3d动漫| 久久伦理网站| 日韩在线观看免费高清| 一区二区三区成人在线视频| 伊人久久亚洲影院| 欧美激情喷水| 成人黄色激情网站| 97欧洲一区二区精品免费| 亚洲剧情一区二区| 亚洲最新视频在线播放| 美女久久网站| 99ri日韩精品视频| 在线a人片免费观看视频| 18黄暴禁片在线观看| 国产精品久久久久99| 精品久久国产字幕高潮| 国产免费观看久久| 亚洲欧美日韩一区在线观看| 日本99精品| 成人av福利| 久久国产精品国产精品| 日本高清视频一区二区三区| 欧美精品videossex性护士|