基于向量数据库搭建自己的搜索引擎

news2024/10/10 14:24:24

前言【基于chatbot】

厌倦了商业搜索引擎搜索引擎没完没了的广告,很多时候,只是需要精准高效地检索信息,而不是和商业广告“斗智斗勇”。以前主要是借助爬虫工具,而随着技术的进步,现在有了更多更方便的解决方案,向量数据库就是其中之一【chatGPT也需要它的支撑】。

环境搭建【工作环境为windows10,数据库环境为centos7】

1. 安装python3.9【具体参考以下文章】

零基础小白安装python开发环境

2. 安装git【网上教程太多了,就不写了。有需要的可以留言】

3. 安装docker和docker-compose【网上教程太多了,就不写了。有需要的可以留言】

4. 安装milvus

在centos系统中,执行以下命令

wget https://github.com/milvus-io/milvus/releases/download/v2.2.11/milvus-standalone-docker-compose.yml -O docker-compose.yml

启动向量数据库

sudo docker-compose up -d 【-d是后台启动,第一次启动可以不加,有报错的话直接在命令行能看到】

ip和端口号,根据自己的实际情况做调整

图片

下载代码

git clone https://github.com/gitksqc/chatbot.git

安装python虚拟环境

python -m venv venvtest

安装模块

 # 配置国内镜像 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 命令行进入到代码所在目录 pip install -r requirements.txt

准备数据集【可以自己用爬虫做数据集】

# 我这里选的是新闻数据集做测试,可以根据自己情况选择https://www.kaggle.com/datasets/ceshine/yet-another-chinese-news-dataset

下载模型​​​​​​​

# 需要合理的上网工具,将模型及配置文件拷贝到项目根目录下的shibing624/text2vec-base-chinese目录中https://huggingface.co/shibing624/text2vec-base-chinese

图片

导入数据​​​​​​​

# 将下载的新闻数据集拷贝到项目根目录下news_collection.csv# 在项目根目录下执行insert.py脚本,等待执行结束python insert.py

运行项目​​​​​​​

# 激活虚拟环境.\venvtest\Scripts\Activate.ps1
# 启动服务 uvicorn main:app --reload

搜索

  1. 打开浏览器 访问http://127.0.0.1:8000【端口号可以自己在代码中设置】

    图片

  2. 输入要搜索的文字,点击搜索【页面没有做排版,主要演示功能】

    图片

到此就结束了,有问题可以留言或私信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1568010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024-HW --->SSRF

这不是马上准备就要护网了嘛,如火如荼的报名ing!!!那么小编就来查缺补漏一下以前的web漏洞,也顺便去收录一波poc!!!! 今天讲的主人公呢就是SSRF,以前学的时候…

QA测试开发工程师面试题满分问答5: 内存溢出和内存泄漏问题

概念阐述 内存溢出(Memory Overflow)和内存泄漏(Memory Leak)是与计算机程序中的内存管理相关的问题,它们描述了不同的情况。 内存溢出是指程序在申请内存时,要求的内存超出了系统所能提供的可用内存资源…

不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式

大家好,我是知微! 学习过单片机的小伙伴对GPIO肯定不陌生,GPIO (general purpose input output)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚。 在STM32中,GPIO的工作模式被细分为8种…

N1912A安捷伦N1912A功率计

181/2461/8938产品概述: 安捷伦N1912A双通道P系列宽带功率传感器为R&D和制造工程师提供精确和可重复的功率测量,应用市场包括航空航天和国防(雷达)、无线通信和无线802.11a/b/g网络。该仪表/传感器组合提供的测量包括峰值功率…

XXLJob中GLUE模式实现在线编写java/shell/python/php/nodejs/powerShell---SpringCloud工作笔记202

1.起因: 之前就一直想实现类似的功能,今天总于找到有可以参考的东西了,这个思路可以帮助实现这种功能. 2.获得灵感 就是:我想实现通过在线编写代码,来扩展我们平台的能力,这样随着业务的扩展,不用我们每次都修改了代码,再去部署,这样就比较麻烦,今天偶尔发现,对于xxljob来说.有…

React 入门

一、官网地址 英文官网: https://reactjs.org/中文官网: https://react.docschina.org/ 二、React 特点 声明式编码组件化编码React Native 编写原生应用高效(优秀的 Diffing 算法)高效的原因:1.使用虚拟DOM,不总是直接操作页面…

从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇

引言 近日,Redis Labs 宣布其主导的开源项目 Redis 将采用双重源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1)。这一重大决策标志着 Redis 从传统的 BSD 许可证向更加严格的控制权转变,同时也引发…

AlexNet网络模型

AlexNet 是一个深度卷积神经网络,由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 在 2012 年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)中首次提出并获得了显著的成功。它是深度学习历史上一个里程碑式的模型,对后来的深…

如何使用PL/SQL Developer工具导出clob字段的表?

1 准备测试数据 导出测试对象:表test_0102,others字段为clob类型 --创建中间表test_0101 create table test_0101( id number, name varchar2(20), others clob);--插入100条测试数据 beginfor i in 1..100 loopinsert into test_0101 values(i,i||_a,l…

文件批量重命名管理,一键将图片的名称进行统一重命名,高效管理文件

在数字时代,我们的生活中充满了各种文件,特别是图片文件。随着时间的推移,我们可能会遇到这样的问题:文件命名不规范,难以快速找到需要的图片。这时,一款强大的文件批量重命名管理工具就显得尤为重要。 首…

JavaScript(一)基础

文章目录 一、JS介绍JavaScript是什么JavaScript书写位置JavaScript的注释输入输出语法字面量 二、变量变量是什么变量基本使用变量的本质变量命名规则与规范变量拓展-数组var与let的区别 三、常量四、数据类型数据类型检测数据类型数据类型转换隐式转换显式转换 简单运算符断点…

git分支-基本分支与合并

问题假设 让我们通过一个简单的分支和合并的例子,演示在实际工作中可能会使用的工作流程。将按照以下步骤进行: 在网站上进行一些工作。为正在开发的新用户故事创建一个分支。在该分支上进行一些工作。 在这个阶段,我们可能会接到一个电话…

LC 144.二叉树的前序遍历

二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入: root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入: root [] 输出:[] 示例 3: 输入&…

2024年 CS2最佳游戏启动项

引言: Counter-Strike 2(CS 2)是一款备受瞩目的游戏,而启动选项则是影响游戏性能和体验的关键因素之一。然而,有关所有选项都应该强制使用的说法并不正确。事实上,大多数选项可能对某些计算机并不适用&…

go 指针和内存分配

定义 了解指针之前,先讲一下什么是变量。 每当我们编写任何程序时,我们都需要在内存中存储一些数据/信息。数据存储在特定地址的存储器中。内存地址看起来像0xAFFFF(这是内存地址的十六进制表示)。 现在,要访问数据…

讲讲你对数据结构-线性表了解多少?

线性表 - 数组和矩阵 当谈到线性表时,数组和矩阵是两种常见的数据结构。 数组(Array): 数组是有序的元素集合,可以通过索引来访问和操作其中的元素。它是最简单、最基本的数据结构之一。数组的特点包括: …

ctf_show笔记篇(web入门---SSRF)

ssrf简介 ssrf产生原理: 服务端存在网络请求功能/函数,例如:file_get_contens()这一类类似于curl这种函数传入的参数用户是可控的没有对用户输入做过滤导致的ssrf漏洞 ssrf利用: 用于探测内网服务以及端口探针存活主机以及开放服务探针是否存…

计算机网络:局域网的数据链路层

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

【2024红明谷】三道Web题目的记录

红明谷 文章目录 红明谷Web1 | SOLVED LaterWeb2 | UNSOLVEDWeb3 | SOLVED 容器已经关咯,所以有些场景只能靠回忆描述啦,学习为主,题目只是一个载体~ 本次比赛学习为主,确实再一次感受到久违的web题目的魅力了,可能也是…

C++实现二叉搜索树的增删查改(非递归玩法)

文章目录 一、二叉搜索树的概念结构和时间复杂度二、二叉搜索树的插入三、二叉搜索树的查找四、二叉搜索树的删除(最麻烦,情况最多,一一分析)3.1首先我们按照一般情况下写,不考虑特殊情况下4.1.1左为空的情况&#xff…