Améliorez votre application RAG avec la capacité de recherche sur le Web !

王林
Libérer: 2024-09-10 06:00:36
original
1154 Les gens l'ont consulté

Enhance Your RAG Application With Web Searching Capability!

Introduction

Lorsque nous construisons des projets amusants avec des applications de génération augmentée par récupération (RAG), nous sommes souvent confrontés à des limitations telles que des restrictions de navigation, ce qui rend difficile l'obtention des dernières informations ou des données actuelles, comme les mises à jour météo (j'espère quelque chose de plus amusant). Pour résoudre ce problème, nous pouvons équiper notre application RAG d’outils de recherche sur Internet. Allons-y !

 Notre banc d'outils

  • LangChain (Framework pour la création d'applications avec de grands modèles de langage)
  • SearXNG (métamoteur de recherche gratuit)
  • CPython (un wrapper en langage C :> )
  • Docker (un homme avec du pain frais)

Installation

Nous commençons d’abord par l’installation de SearXNG.

1 -) Obtenez SearXNG-docker

clone de git https://github.com/searxng/searxng-docker.git

2 -) Modifiez le fichier .env pour définir le nom d'hôte et un email

3-) Générer la clé secrète

<Linux>

sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml

<MacOS>
sed -i"" -e "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml 

<Windows>
$randomBytes = New-Object byte[] 32
(New-Object Security.Cryptography.RNGCryptoServiceProvider).GetBytes($randomBytes)
$secretKey = -join ($randomBytes | ForEach-Object { "{0:x2}" -f $_ })
(Get-Content searxng/settings.yml) -replace 'ultrasecretkey', $secretKey | Set-Content searxng/settings.yml
Copier après la connexion

4 -) Mettez à jour le searxng/settings.yml pour activer les formats de recherche disponibles et désactivez le limiteur pour notre instance LangChain :

use_default_settings: true
server:
  # base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
  secret_key: "<secret-key>"  # change this!
  limiter: false
  image_proxy: true
ui:
  static_use_hash: true
redis:
  url: redis://redis:6379/0

search:
    formats:
        - html
        - json
Copier après la connexion

5-) Exécuter l'instance SearXNG

docker composer

Vérifiez le déploiement de SearXNG dans Docker. Si tout semble bon, vous êtes prêt à continuer.

 Application de démonstration

1-) Créer un environnement virtuel & activer

python3 -m venv .venv
source .venv/bin/activate
Copier après la connexion

2-) Installer Langchain

pip install langchain langchain-community
Copier après la connexion

3 -) Créer main.py

## Simple Get Results
from langchain_community.utilities import SearxSearchWrapper
import pprint

s = SearxSearchWrapper(searx_host="http://localhost:8080",)
result = s.results("What is RAG?", num_results=10, engines=["google"])
pprint.pprint(result)

## Github Tool

from langchain_community.tools.searx_search.tool import SearxSearchResults

wrapper = SearxSearchWrapper(searx_host="**")
github_tool = SearxSearchResults(name="Github", wrapper=wrapper,
                            kwargs = {
                                "engines": ["github"],
                                })

Copier après la connexion

Et voilà ! Votre application RAG dispose désormais de fonctionnalités de recherche. Ce guide n'introduit rien de nouveau mais vise à rassembler les étapes permettant d'ajouter une fonctionnalité de recherche Web à votre application RAG. J'espère que ça aide !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal