自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

動(dòng)手實(shí)現(xiàn)GraphRAG,檢索效果大幅提升

發(fā)布于 2024-7-30 00:48
瀏覽
0收藏

1 理解檢索增強(qiáng)生成(RAG)

檢索增強(qiáng)生成(RAG)技術(shù)通過(guò)融合檢索得到的文檔和用戶輸入的查詢,為語(yǔ)言模型注入了額外的上下文信息。這種結(jié)合不僅豐富了模型的知識(shí)庫(kù),還提升了其回答的準(zhǔn)確性和相關(guān)性。

例如,當(dāng)用戶提出涉及特定個(gè)人信息或商業(yè)數(shù)據(jù)的問(wèn)題時(shí),RAG能夠從預(yù)設(shè)的數(shù)據(jù)源中提取關(guān)鍵信息,輔助模型給出更加精準(zhǔn)的答復(fù)。

簡(jiǎn)而言之,RAG技術(shù)就像是給語(yǔ)言模型配備了一個(gè)智能的背景知識(shí)庫(kù),使其在面對(duì)復(fù)雜問(wèn)題時(shí),能夠做出更加明智的回應(yīng)。

2 GraphRAG:通過(guò)圖形結(jié)構(gòu)增強(qiáng)上下文

GraphRAG技術(shù)在傳統(tǒng)RAG的基礎(chǔ)上更進(jìn)一步,通過(guò)構(gòu)建信息的圖形網(wǎng)絡(luò),實(shí)現(xiàn)了對(duì)數(shù)據(jù)的深度理解和應(yīng)用。這不僅僅是簡(jiǎn)單地檢索相關(guān)文檔,更重要的是能夠洞察文檔中實(shí)體間的復(fù)雜聯(lián)系。

舉個(gè)例子,假設(shè)數(shù)據(jù)集中包含了紐約、洛杉磯和芝加哥等城市的信息。GraphRAG不僅能夠檢索到這些城市的相關(guān)資料,還能識(shí)別并利用它們之間的各種關(guān)系,比如紐約與洛杉磯之間的貿(mào)易伙伴關(guān)系,或是洛杉磯與芝加哥之間的文化交流項(xiàng)目。

這樣的技術(shù)使GraphRAG在處理信息時(shí)能夠展現(xiàn)出更為豐富的洞察力和更深層次的分析能力。

3 設(shè)置環(huán)境

源碼地址:

??https://github.com/aniket-work/why_graphRAG_such_game_changer??

創(chuàng)建虛擬環(huán)境:

python -m venv why_graphRAG_such_game_changer

激活環(huán)境:

why_graphRAG_such_game_changer\Scripts\activate   (Windows)

source why_graphRAG_such_game_changer/bin/activate  (Unix/macOS

安裝依賴項(xiàng):

cd path/to/your/project
pip install -r requirements.txt

使用Ollama拉取必要的模型:

ollama pull mistral
ollama pull nomic-embed-text

安裝Ollama:

  • 訪問(wèn)Ollama官方網(wǎng)站:https://ollama.ai/
  • 下載適合的操作系統(tǒng)的版本(Windows、macOS或Linux)。
  • 按照操作系統(tǒng)提供的安裝說(shuō)明進(jìn)行操作。
  • 安裝完成后,打開終端或命令提示符。
  • 通過(guò)運(yùn)行以下命令來(lái)驗(yàn)證安裝:

ollama --version

初始化和使用GraphRAG:

python -m graphrag.index --init --root ragtest

下載數(shù)據(jù)

你可以下載任何你喜歡的數(shù)據(jù),已經(jīng)將一個(gè)小型的、基于場(chǎng)景的、面向關(guān)系的故事情節(jié)檢查并放入了“input”文件夾中。

4 初始化過(guò)程

運(yùn)行命令python -m graphrag.index --init --root ragtest初始化GraphRAG時(shí),以下一系列操作將會(huì)自動(dòng)進(jìn)行:

創(chuàng)建配置文件:

  • .env:此文件包含運(yùn)行GraphRAG管道所需的環(huán)境變量。它通常包括用于OpenAI API或Azure OpenAI端點(diǎn)的API密鑰。例如:

GRAPHRAG_API_KEY=<API_KEY>
  • settings.yaml:此文件保存GraphRAG管道的設(shè)置??梢孕薷拇宋募哉{(diào)整各種管道設(shè)置,例如Azure OpenAI的API基礎(chǔ)、版本和部署名稱。例如:

llm:
  type: azure_openai_chat
  api_base: https://<instance>.openai.azure.com
  api_version: 2024-02-15-preview
  deployment_name: <azure_model_deployment_name>
  • prompts/:此目錄包含GraphRAG使用的默認(rèn)提示。這些提示指導(dǎo)大型語(yǔ)言模型(LLM)生成回答。可以修改這些提示或運(yùn)行自動(dòng)提示調(diào)整命令以生成適應(yīng)你數(shù)據(jù)的新提示。

5 目的和用途

  • .env 文件:

目的:存儲(chǔ)環(huán)境變量,包括用于驗(yàn)證對(duì)OpenAI或Azure OpenAI服務(wù)請(qǐng)求的API密鑰。

用途:此文件由GraphRAG系統(tǒng)引用,以訪問(wèn)必要的憑據(jù)和配置設(shè)置。

  • settings.yaml 文件:
  • 目的:包含GraphRAG管道的詳細(xì)配置設(shè)置,如API端點(diǎn)、模型版本和部署名稱。
  • 用途:此文件用于自定義GraphRAG管道的行為,允許用戶指定使用哪個(gè)LLM以及如何與之交互。
  • prompts/ 目錄:
  • 目的:保存默認(rèn)的LLM提示,指導(dǎo)模型生成回答。這些提示可以根據(jù)你的數(shù)據(jù)的具體需求進(jìn)行定制。
  • 用途:用戶可以修改提示以提高生成回答的準(zhǔn)確性和相關(guān)性。該目錄還支持運(yùn)行自動(dòng)提示調(diào)整命令以創(chuàng)建新的、特定于數(shù)據(jù)的提示。

6 修改 settings.yaml

由于我們打算在本地運(yùn)行g(shù)raphRAG,需要對(duì)默認(rèn)的 settings.yaml 文件進(jìn)行一些更改。

encoding_model: cl100k_base
skip_workflows: []
llm:
  api_key: ${GRAPHRAG_API_KEY}
  type: openai_chat
  model: mistral
  model_supports_json: true
api_base: http://localhost:11434/v1
parallelization:
  stagger: 0.3
async_mode: threaded
embeddings:
  async_mode: threaded
  llm:
    api_key: ${GRAPHRAG_API_KEY}
    type: openai_embedding
    model: nomic_embed_text
    api_base: http://localhost:11434/api

7 修改以使用 Ollama 嵌入

GraphRAG 本身不支持 Ollama 嵌入模型,但可以通過(guò)修改 GraphRAG 庫(kù)中的特定文件來(lái)添加此支持。通過(guò)編輯 openai_embeddings_llm.py 文件,我們可以啟用使用 Ollama 嵌入模型。這涉及導(dǎo)入必要的模塊并更新代碼以調(diào)用 Ollama 的嵌入函數(shù),允許我們?cè)?GraphRAG 管道中利用高級(jí)嵌入。

以下是如何更新 openai_embeddings_llm.py 文件的方法:

from typing_extensions import Unpack
from graphrag.llm.base import BaseLLM
from graphrag.llm.types import EmbeddingInput, EmbeddingOutput, LLMInput
from .openai_configuration import OpenAIConfiguration
from .types import OpenAIClientTypes
import ollama

class OpenAIEmbeddingsLLM(BaseLLM[EmbeddingInput, EmbeddingOutput]):
    """
    使用 Ollama 進(jìn)行嵌入的自定義 LLM(大型語(yǔ)言模型)實(shí)現(xiàn)。
    """

    def __init__(self, client: OpenAIClientTypes, configuration: OpenAIConfiguration):
        """
        初始化 OpenAIEmbeddingsLLM 實(shí)例。

        參數(shù):
            client (OpenAIClientTypes): 與AI服務(wù)交互的客戶端。
            configuration (OpenAIConfiguration): AI服務(wù)的配置設(shè)置。
        """
        self._client = client
        self._configuration = configuration

    async def _execute_llm(
        self, input: EmbeddingInput, **kwargs: Unpack[LLMInput]
    ) -> EmbeddingOutput | None:
        """
        使用 Ollama 嵌入執(zhí)行大型語(yǔ)言模型。

        參數(shù):
            input (EmbeddingInput): 嵌入模型的輸入數(shù)據(jù)。
            **kwargs (Unpack[LLMInput]): 模型參數(shù)的附加關(guān)鍵字參數(shù)。

        返回:
            EmbeddingOutput | None: 模型的輸出嵌入或如果沒(méi)有輸出則為 None。
        """
        args = {
            "model": self._configuration.model,
            **(kwargs.get("model_parameters") or {}),
        }
        embedding_list = []
        for inp in input:
            embedding = ollama.embeddings(model="nomic-embed-text", prompt=inp)
            embedding_list.append(embedding["embedding"])
        return embedding_list

8 使用 GraphRAG 運(yùn)行查詢

使用以下命令索引數(shù)據(jù):

python -m graphrag.index --root .\ragtest

輸出

動(dòng)手實(shí)現(xiàn)GraphRAG,檢索效果大幅提升-AI.x社區(qū)圖片

運(yùn)行查詢以測(cè)試設(shè)置:

python -m graphrag.query --root .\ragtest --method global "How was the impact of Lily's action on villagers"

輸出

動(dòng)手實(shí)現(xiàn)GraphRAG,檢索效果大幅提升-AI.x社區(qū)圖片

9 結(jié)語(yǔ)

未來(lái),人工智能在商業(yè)領(lǐng)域的影響力將日益增強(qiáng)。那些能夠?qū)⑷斯ぶ悄芗夹g(shù)有效融入其業(yè)務(wù)運(yùn)營(yíng)的公司,將具備更快的創(chuàng)新速度、更優(yōu)質(zhì)的客戶服務(wù)體驗(yàn),以及更高效的流程優(yōu)化能力。GraphRAG技術(shù)的出現(xiàn),僅是人工智能潛力的冰山一角。

隨著時(shí)間推移,人工智能將變得更加精密復(fù)雜。它將不僅能夠理解問(wèn)題,還能生成貼近人類思維的回答。預(yù)計(jì)不久的將來(lái),企業(yè)將見(jiàn)證一種新型人工智能系統(tǒng)的誕生——這些系統(tǒng)不僅能夠回答問(wèn)題,還能基于海量數(shù)據(jù)分析提供戰(zhàn)略性的見(jiàn)解和建議。因此,對(duì)于任何希望在競(jìng)爭(zhēng)中保持領(lǐng)先地位的企業(yè)而言,積極擁抱人工智能并持續(xù)關(guān)注其最新發(fā)展,顯得尤為關(guān)鍵。這不僅是一個(gè)選擇,更是一個(gè)必然的趨勢(shì)。

本文轉(zhuǎn)載自 ??AI科技論談??,作者: AI科技論談

標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦