十一、基于大模型的在线搜索平台——prepare

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

为了解决大模型不够“聪明”的问题,业界出现了很多方法来让大模型更加满足我们特定需求,很多技术也都是围绕这方面展开的,比如Prompt、RAG、fine-tuning私有模型,这些技术都是从不同的角度去增加大模型的能力(满足企业或个人需求的能力)。
随着大模型自身越来越强大,他本身的能力可以满足我们很多需求。个人见解,相对于预训练、微调等技术,Prompt调优和RAG增强搜索是其中最易操作且最易出现事半功倍效果的技术。

一、大模型赋能

给大模型赋予在线搜索的能力,可以理解为是RAG,当大模型遇到处理不了的问题,去搜索引擎进行搜索,将搜索结果再次返回给大模型进行处理,将处理后的结果返回出来。当然也可以更复杂,同时赋予大模型知识库和在线搜索两种能力。

二、垂直领域的搜索引擎

本篇(系列)文章实现一个垂直领域的搜索引擎——对于IT人员的搜索引擎

为什么不是通用搜索引擎?

因为通用搜索引擎,数据量太庞大,爬取不同网站的数据对于爬虫代码也有很高的要求,而且获取过多的数据交给大模型处理,会超过大模型上下文长度,需要进行分割,最主要的是使用在线大模型开发时,过长的token也会产生大量的费用。感兴趣的朋友可以自己研究着写一个通用搜索引擎的项目,可以封装成产品,现在来说也是个不错创业产品。

三、方案设计

在这里插入图片描述红色数字标记的步骤是运用大模型原生能力,如果大模型可以解答用户的问题则直接返回结果。

蓝色数字标记的步骤是运用大模型+在线搜索的能力,如果用户询问的问题大模型无法回答,则大模型通过function calling去调用我们自己封装好的工具,也就是Google搜索,Google搜索的能力Google已经通过api提供给我们,所以最重要的是爬虫,对搜索到结果网站进行爬取,获取网站内容。最后,将爬取到的信息交给大模型处理,返回答案。

四、基于Google API的搜索功能

要实现在线搜索的功能只能通过Google api来实现

我们需要先开通Google的api,再创建一个Google的可编程搜索引擎cx**【需要kx上网、google帐号】

创建Google API 并获取key

地址:https://console.cloud.google.com/

用google帐号登录,然后创建一个Project

在这里插入图片描述

进入刚刚创建的Project,点击Library

在这里插入图片描述

搜索框搜索Google Search,找到放大镜图片这个库,点击进去Enable

在这里插入图片描述

启动之后进入Credentials,创建API key

在这里插入图片描述
在这里插入图片描述

创建完成后保存自己的API key

在这里插入图片描述

创建可编程的搜索引擎

网址:https://programmablesearchengine.google.com/about/

进入点击Get start,创建搜索引擎

在这里插入图片描述

创建完成后生成一段js代码,其实就是一个搜索框,可以嵌入任何网页中。其中最主要的是cx字段,这是你创建的这个搜索引擎的标识,自行保存,后面实现搜索功能需要用到。

在这里插入图片描述
在这里插入图片描述
到这里准备工作完成,已经获取了一个key一个搜索引擎(cx标识)

另外还需要一个Google api地址:https://www.googleapis.com/customsearch/v1

测试搜索引擎

import requests
import os
from dotenv import load_dotenv
load_dotenv()
GoogleSearch_API_KEY = os.getenv("GoogleSearch_API_KEY")
CX_ID = os.getenv("CX_ID")
GoogleSearch_API = "https://www.googleapis.com/customsearch/v1"

params = {
    'q': "Pytorch", # 搜索的内容
    'key': GoogleSearch_API_KEY, # 谷歌搜索api key
    'cx': CX_ID # 搜索引擎id
}

response = requests.get(url=GoogleSearch_API,params=params)

data = response.json() # 解析数据

print(data)

print(data['items'][0])

其中items字段就是检索到内容,后面爬取就是这部分内容。

请求参数有很多,常用的如下:

NameDescription
c2coff是否开启中文搜索模式默认0表示开启,1表示停止
cr在指定的国家地区进行搜索,即搜索返回结果只源于该地区
dateRestrict只搜索某特定时间段内的内容
Ir搜索特定语言内容的内容
num搜索返回的结果个数,默认为10个,有效数值为1-10
siteSearch搜索结果必须包含某网址
siteSearchFilter搜索结果必须排除某网址

搜过功能封装函数

将上面调用Google api实现的搜索功能封装成函数,方便我们后面去使用。

def google_search(query, num_results=10, site_url=None):
    
    GoogleSearch_API_KEY = os.getenv("GoogleSearch_API_KEY")
    CX_ID = os.getenv("CX_ID")
    GoogleSearch_API = "https://www.googleapis.com/customsearch/v1"

    # API 请求参数
    if site_url == None:
        params = {
        'q': query,          
        'key': GoogleSearch_API_KEY,      
        'cx': CX_ID,        
        'num': num_results   
        }
    else:
        params = {
        'q': query,         
        'key': GoogleSearch_API_KEY,      
        'cx': CX_ID,        
        'num': num_results,  
        'siteSearch': site_url
        }

    # 发送请求
    response = requests.get(GoogleSearch_API, params=params)
    response.raise_for_status()

    # 解析响应
    search_results = response.json().get('items', [])

    # 提取所需信息,这里选择了三个字段,将搜索的信息以json格式保存,后面根据这个信息进行爬取
    results = [{
        'title': item.get('title', None),
        'link': item.get('link', None),
        'snippet': item.get('snippet', None),
    } for item in search_results]

    return results

测试

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷学技术的梁胖胖yo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值