Quivr に基づいて個人のナレッジ ベースを構築する

目次

Quivr の概要

Quivr の機能

Quivr デモ

        GPT3.5 を使用したデモ:

        新バージョンのデモ:

Quivr の動作中

Quiv で使用される主なテクノロジー

Quiv の実践次第

Supabase プロジェクトを作成する

Quiv プロジェクトをデプロイする

        最初のステップ: ソースコードが完成しました

        ステップ 2: 環境変数を設定する

        3 番目のステップ: SQL を実行する

        ステップ 4: アプリケーションを起動する

        ステップ 5: 効果のデモンストレーション

                ユーザーログイン:

                ナレッジベースをアップロードします:

                 Q&A の Q&A プロンプトを変更する


        現在、私たちはオープンソース フレームワーク Quivr を使用して独自のナレッジ ベースを構築しようとしています。公式ウェブサイトでは、Quivr を第 2 の脳として宣伝しており、生成人工知能の力を利用して非構造化情報を保存および取得します。AI 機能を備えた Obsidian のようなものと考えることができます。公式サイトの紹介絵柄を見ると、黒曜石から知恵の木が生えていて、その意味合いがすごいです。

Quivr の概要

        Quivr は、高度な人工知能テクノロジーを使用して情報の生成と取得を支援し、テキスト、画像、コード スニペットなど、ほぼすべての種類のデータを処理できます。同時に、速度と効率にも重点を置き、データに迅速にアクセスできるようにします。データ セキュリティはお客様が管理できます。Quivr は、テキスト、Markdown、PDF、PowerPoint、Excel、Word、オーディオ、ビデオなどを含む複数のファイル形式をサポートしています。

Quivr の機能

  •  ユニバーサル データの受け入れ: Quivr は、投げ込まれるほぼすべての種類のデータを処理できます。テキスト、Markdown、PDF、PowerPoint、Excel、Word、オーディオ、ビデオなどが含まれます。
  • 生成 AI: Quivr は高度な人工知能を使用して、情報の生成と取得を支援します。
  • 高速かつ効率的: Quivr は速度と効率を中心に設計されているため、データへの高速アクセスを保証します。
  • 安全: どのようなシナリオでも、いつでも、データはお客様の管理下にあります。
  • オープンソース: オープンソース、無料。

Quivr デモ

GPT3.5 を使用したデモ:

        次のビデオは、ChatGPT3.5 に基づくデモ デモンストレーションであり、ナレッジ ベースの構築と複数ラウンドの対話の質疑応答を示しています。https://user-images.githubusercontent.com/19614572/238774100-80721777-2313-468f-b75e-09379f694653.mp4

新バージョンのデモ:

        以下の動画は、5月下旬に公開された操作UIを置き換えた最新バージョンのデモ動画です。次に、この新バージョンを使って独自のナレッジベースを構築してみます。https://user-images.githubusercontent.com/19614572/239713902-a6463b73-76c7-4bc0-978d-70562dca71f5.mp4

Quivr の動作中

Quiv で使用される主なテクノロジー

        Quivr は、他のナレッジ ベース ソリューションと同様、基本的にプロンプ​​トと大規模モデル間の対話に基づいています。Quivr で使用される主なテクノロジは次のとおりです。

  • LLM:GPT3.5 / GPT4
  • エンベディング:OpenAIエンベディング
  • ベクトル知識ベース: Supabase
  • Docker:Docker Compose

Quiv の実践次第

        Quivr が Supabase ベクトル データベースを使用することを前述しました。その前に、Supabase アカウントを作成し、Supabase プロジェクト API キー、Supabase プロジェクト URL を取得し、いくつかの必要なテーブルを生成する必要があります。

Supabase プロジェクトを作成する

        Supabase の公式 Web サイトのアドレスは: Dashboard | Supabase github アカウントをお持ちの場合は、GitHub アカウントで直接ログインできますが、お持ちでない場合は、他の方法で登録できます。プロジェクトの作成は比較的簡単で、作成時に有料と無料があり、直接売春を実践することができ、思い切って無料の方法を選択することができます。プロジェクトが作成されると、プロジェクトの関連構成が表示されます。必要なのは 2 番目の図でマークされているものです。後でこれらの情報を再度検索したい場合は、次のアドレスを使用できます: API 設定 | Supabase を選択するか、設定を入力するプロジェクトを問い合わせます。

Quiv プロジェクトをデプロイする

        事前環境の準備ができたら、Quiv プロジェクトのデプロイを開始します。

最初のステップ: ソースコードが完成しました

        

git clone https://github.com/StanGirard/quivr.git && cd quivr 
# 切换到 v0.0.4分支 
git checkout v0.0.4 
git checkout -b v0.0.4

ステップ 2: 環境変数を設定する

        フロントエンド ディレクトリとバックエンド ディレクトリの環境変数を変更する必要があります。まず、ここに環境変数をコピーします。下の図は、作成したプロジェクトの設定に従ってローカルに置き換えたものですが、バックエンド ディレクトリの ANTHROPIC_API_KEY は Claude の設定なので、削除しても問題ありません。

cp .backend_env.example backend/.env 
cp .frontend_env.example frontend/.env

3 番目のステップ: SQL を実行する

        構成が完了したら、次のステップはデータベースを初期化することです。Supabase パネルを開き、下図に示すように SQL 実行ボックスをクリックして作成し、次の SQL コードを順番に実行します。

create extension vector;

-- Create a table to store your documents
create table if not exists documents (
id bigserial primary key,
content text, -- corresponds to Document.pageContent
metadata jsonb, -- corresponds to Document.metadata
embedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed
);

CREATE FUNCTION match_documents(query_embedding vector(1536), match_count int)
    RETURNS TABLE(
        id bigint,
        content text,
        metadata jsonb,
        -- we return matched vectors to enable maximal marginal relevance searches
        embedding vector(1536),
        similarity float)
    LANGUAGE plpgsql
    AS $$
    # variable_conflict use_column
BEGIN
    RETURN query
    SELECT
        id,
        content,
        metadata,
        embedding,
        1 -(documents.embedding <=> query_embedding) AS similarity
    FROM
        documents
    ORDER BY
        documents.embedding <=> query_embedding
    LIMIT match_count;
END;
$$;
create table
  stats (
    -- A column called "time" with data type "timestamp"
    time timestamp,
    -- A column called "details" with data type "text"
    chat boolean,
    embedding boolean,
    details text,
    metadata jsonb,
    -- An "integer" primary key column called "id" that is generated always as identity
    id integer primary key generated always as identity
  );
-- Create a table to store your summaries
create table if not exists summaries (
    id bigserial primary key,
    document_id bigint references documents(id),
    content text, -- corresponds to the summarized content
    metadata jsonb, -- corresponds to Document.metadata
    embedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed
);

CREATE OR REPLACE FUNCTION match_summaries(query_embedding vector(1536), match_count int, match_threshold float)
    RETURNS TABLE(
        id bigint,
        document_id bigint,
        content text,
        metadata jsonb,
        -- we return matched vectors to enable maximal marginal relevance searches
        embedding vector(1536),
        similarity float)
    LANGUAGE plpgsql
    AS $$
    # variable_conflict use_column
BEGIN
    RETURN query
    SELECT
        id,
        document_id,
        content,
        metadata,
        embedding,
        1 -(summaries.embedding <=> query_embedding) AS similarity
    FROM
        summaries
    WHERE 1 - (summaries.embedding <=> query_embedding) > match_threshold
    ORDER BY
        summaries.embedding <=> query_embedding
    LIMIT match_count;
END;
$$;

ステップ 4: アプリケーションを起動する

        前の手順の準備作業が完了したので、アプリケーションを起動できるようになります。docker のバージョンが低すぎる場合、エラーが表示され、docker を更新する必要があることに注意してください。誰もが自分のタイミングに合わせてバージョンアップすることができます。イメージをパッケージ化してアプリケーションを開始する必要があるため、このステップの開始には長い時間がかかります。

docker compose build && docker compose up

ステップ 5: 効果のデモンストレーション

ユーザーログイン:

ナレッジベースをアップロードします:

Q&A の Q&A プロンプトを変更する

        次に、ナレッジ ベースで質問と回答を実行できます。現時点では、ソース コードはまだ英語の質問と回答をサポートしています。中国語を使用したい場合は、質問と回答のテンプレートを変更できます。(笑)、ファイル パスは次のとおりです。次のように:

おすすめ

転載: blog.csdn.net/lly576403061/article/details/131145522