Cree una base de conocimiento personal basada en Quivr

Tabla de contenido

Introducción a Quivr

Características de Quivr

Demostración de Quivr

        Demostración con GPT3.5:

        Demostración de la nueva versión:

Quivr en acción

Las principales tecnologías utilizadas por Quiv

La práctica de Quiv depende

Crear un proyecto Supabase

Implementar el proyecto Quiv

        El primer paso: ahora el código fuente

        Paso 2: Establecer variables de entorno

        El tercer paso: ejecutar sql

        Paso 4: Inicie la aplicación

        Paso 5: Demostración del efecto

                inicio de sesión de usuario:

                Subir base de conocimientos:

                 Modificar el aviso de Preguntas y respuestas para Preguntas y respuestas


        Hoy tratamos de usar el marco de código abierto Quivr para construir nuestra propia base de conocimiento. El sitio web oficial anuncia a Quivr como su segundo cerebro, aprovechando el poder de la inteligencia artificial generativa para almacenar y recuperar información no estructurada. Puedes pensar en ello como Obsidian con capacidades de IA. Mirando el patrón de introducción en el sitio web oficial, también hay un árbol de sabiduría que crece de obsidiana, y la implicación es realmente asombrosa.

Introducción a Quivr

        Quivr utiliza tecnología de inteligencia artificial avanzada para ayudarlo a generar y recuperar información, y puede manejar casi todos los tipos de datos, incluidos texto, imágenes, fragmentos de código, etc. Al mismo tiempo, también se enfoca en la velocidad y la eficiencia, asegurando que se pueda acceder rápidamente a los datos. La seguridad de los datos está bajo tu control. Quivr admite múltiples formatos de archivo, incluidos texto, Markdown, PDF, PowerPoint, Excel, Word, audio, video, etc.

Características de Quivr

  •  Aceptación universal de datos: Quivr puede manejar casi cualquier tipo de datos que le envíes. Incluyendo texto, Markdown, PDF, PowerPoint, Excel, Word, audio, video y más.
  • IA generativa: Quivr utiliza inteligencia artificial avanzada para ayudarlo a generar y recuperar información.
  • Rápido y eficiente: debido a que fue diseñado teniendo en cuenta la velocidad y la eficiencia, Quivr garantiza un acceso rápido a los datos.
  • Seguro: En cualquier escenario y en cualquier momento, sus datos están bajo su control.
  • Open Source: código abierto, gratuito.

Demostración de Quivr

Demostración con GPT3.5:

        El siguiente video es una demostración de demostración basada en ChatGPT3.5, que demuestra la construcción de una base de conocimiento y múltiples rondas de diálogo de preguntas y respuestas. https://user-images.githubusercontent.com/19614572/238774100-80721777-2313-468f-b75e-09379f694653.mp4

Demostración de la nueva versión:

        El siguiente video es un video de demostración de la última versión lanzada a fines de mayo. La nueva versión reemplaza la interfaz de usuario de operación. A continuación, intentamos usar la nueva versión para crear nuestra propia base de conocimientos. https://user-images.githubusercontent.com/19614572/239713902-a6463b73-76c7-4bc0-978d-70562dca71f5.mp4

Quivr en acción

Las principales tecnologías utilizadas por Quiv

        Quivr, al igual que otras soluciones de base de conocimientos, se basa esencialmente en la interacción entre indicaciones y modelos grandes. Las principales tecnologías utilizadas por Quivr son:

  • Maestría en Derecho: GPT3.5 / GPT 4
  • Incrustación: incrustación de OpenAI
  • Base de conocimientos de vectores: Supabase
  • Ventana acoplable:Redacción de ventana acoplable

La práctica de Quiv depende

        Hemos mencionado anteriormente que Quivr usa la base de datos vectorial de Supabase, por lo que antes de eso debemos crear una cuenta de Supabase, obtener la clave API del proyecto de Supabase, la URL del proyecto de Supabase y generar varias tablas necesarias.

Crear un proyecto Supabase

        La dirección del sitio web oficial de Supabase es: Dashboard | Supabase Si tiene una cuenta de github, puede iniciar sesión directamente con su cuenta de GitHub. Si no tiene una, puede registrarse de otras maneras. Crear un proyecto es relativamente sencillo, los hay de pago y gratuitos a la hora de crearlo, podemos practicar la prostitución directa y optar decididamente por el método gratuito. Una vez creado el proyecto, aparecerá la configuración relevante del proyecto, lo que necesitamos es la marcada en la segunda imagen, si desea volver a encontrar esta información más adelante, puede usar esta dirección: Configuración API | Supabase, o seleccione el proyecto para entrar en la configuración Consultar.

Implementar el proyecto Quiv

        Una vez que el entorno previo está listo, comenzamos a implementar el proyecto Quiv.

El primer paso: ahora el código fuente

        

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

Paso 2: Establecer variables de entorno

        Debe modificar las variables de entorno en los directorios frontend y backend, cópielas aquí primero. La imagen a continuación es mi reemplazo local de acuerdo con la configuración en el proyecto creado. Cabe señalar que ANTHROPIC_API_KEY en el directorio backend es la configuración de Claude, podemos eliminarla.

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

El tercer paso: ejecutar sql

        Una vez completada la configuración, el siguiente paso es inicializar la base de datos. Abra el panel de Supabase, haga clic para crear un cuadro de ejecución de sql como se muestra en la siguiente figura y ejecute los siguientes códigos de sql en secuencia.

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;
$$;

Paso 4: Inicie la aplicación

        El trabajo preparatorio en los pasos anteriores está hecho y ahora puede iniciar la aplicación. Cabe señalar que si la versión de Docker es demasiado baja, aparecerá un mensaje de error y será necesario actualizar Docker. Todos pueden actualizar a la versión de acuerdo con su propio tiempo. Este paso tarda mucho en iniciarse porque es necesario empaquetar la imagen e iniciar la aplicación.

docker compose build && docker compose up

Paso 5: Demostración del efecto

inicio de sesión de usuario:

Subir base de conocimientos:

 Modificar el aviso de Preguntas y respuestas para Preguntas y respuestas

        A continuación, puede realizar preguntas y respuestas en la base de conocimiento. Actualmente, el código fuente aún admite preguntas y respuestas en inglés. Si queremos usar chino, podemos modificar la plantilla de preguntas y respuestas. , jajaja), la ruta del archivo es como sigue:

Supongo que te gusta

Origin blog.csdn.net/lly576403061/article/details/131145522
Recomendado
Clasificación