Search Posts

centos用旧版本的rpm安装包覆盖新版本的已安装的包安装软件

若系统上已安装有其他新版本的包。要用旧版本的rpm包替换,可以rpm -Uvh参数 加上–oldpackage,根据 rpm的说明文档,https://manpages.org/rpm/8

--force Same as using --replacepkgs, --replacefiles, and --oldpackage.

也就是 –oldpackage 相当于–force ,强制安装。也就是以下命令是用旧版本的rpm包 强制替换 新版本的rpm包。

rpm -Uvh /home/libxml2-2.9.1-6.el7_2.3.x86_64.rpm --oldpackage
查看余下内容

Linux系统盘扩展分区和文件系统的操作总结

  1. 前提条件

    • 确保Linux实例的操作系统是Alibaba Cloud Linux 2/3、CentOS 6及以上、Debian 8及以上或者Ubuntu14及以上版本。

       
      说明 

      如果为其他操作系统,扩容操作请参见扩展分区和文件系统_Linux数据盘

    • 已在ECS控制台扩容云盘容量。具体操作,请参见步骤一:扩容云盘容量

    • (强烈建议)已创建云盘快照,做好数据备份。具体操作,请参见创建一个云盘快照

       
      说明 

      扩容分区和文件系统正常情况不会丢失数据。为避免误操作导致数据丢失或异常,建议您创建快照备份云盘数据。

    • 本文档不适用于开启了多重挂载功能且使用了集群文件系统的场景。更多信息,请参见开启多重挂载功能

     

    操作步骤

    本文操作适用于以下云盘扩容场景:

    在文档末尾分别以扩容MBR分区、GPT分区、裸数据盘为例,为您展示了扩容分区和文件系统的命令示例,供您参考。

    您可以尝试使用一键扩容工具。该工具会自动生成扩容命令,并支持一键执行扩容命令,帮助您实现操作系统内的分区和文件系统扩容。

     
    1. 访问EBS控制台工具集下的扩容分区和文件系统工具

    2. 选择待操作的云盘,然后单击提交

    3. 工具将检测操作系统分区状态。如果显示操作系统未扩容分区字样,且解决方案中包含自动生成的命令,则可以按照如下操作进行一键扩容。

       
      说明 

      如果未显示扩容命令,则说明工具暂不支持该种情况,您仍需要参考文档手动执行扩容。

      1. 解决方案区域的云助手工具页签中,确认自动生成的扩容命令,然后单击执行上述远程命令

      2. 在弹出的发送命令对话框单击执行,系统将自动执行扩容命令。

      3. 看到命令执行成功提示后,单击取消关闭对话框。

        即可看到该云盘的分区和文件系统扩容成功。

         

        在ECS控制台上扩容云盘容量后,对应分区和文件系统并未扩容,您还需要进入ECS实例内部继续扩容云盘的分区和文件系统,将扩容部分的容量划分至已有分区及文件系统内,使云盘扩容生效。本文为您介绍如何通过两个步骤完成Linux实例云盘的分区和文件系统扩容。

    准备工作:获取目标云盘信息

    执行扩容分区和文件操作系统前,请先获取待扩容云盘和云盘分区信息。

    方式一:通过命令行获取
    方式二:通过控制台获取
     
    1. 远程连接ECS实例。

      具体操作,请参见通过密码或密钥认证登录Linux实例

    2. 运行以下命令,确认待扩容云盘及其分区信息。

      fdisk -lu

      如图所示,表示该实例有2块云盘,系统盘/dev/vda和数据盘/dev/vdb,我们以数据盘/dev/vdb为例。其中:

      • ①:云盘的设备名称。

      • ②:云盘是否分区及分区名称。

        • 已分区:如果有②处的分区信息表示已分区,Device取值为分区名称(示例中为/dev/vdb1),数字1是分区编号,则需扩容分区和文件系统。

        • 未分区(裸设备):如果没有②处的分区信息表示未分区,为裸设备。则无需执行步骤1:扩容分区,直接执行步骤2:扩容文件系统即可。

      • ③:云盘的分区类型。

        Disk label type值为dos表示MBR分区,值为gpt表示GPT分区。

         
        说明
        • 不同操作系统的显示略有不同。如果没有Disk label type字段,可通过System字段判断。System值为Linux表示MBR分区,值为GPT表示GPT分区。

        • 较低版本的fdisk可能不能正常显示GPT分区表。您可以通过gdisk -l /dev/vdb命令查看分区类型。

      • ④:确认待扩容的分区。

        由于容量= sectors值*512 bytes,图示例中:

        • 云盘/dev/vdb的sectors=125829120,则云盘容量=125829120*512bytes=64.4GB(等于60GiB)

        • 分区/dev/vdb1的sectors=(End-Start)=83886078,则分区容量= 83886078*512bytes=42.9GB(等于40GiB)

        根据计算得出/dev/vdb1分区的容量小于云盘/dev/vdb的容量,即/dev/vdb1分区需要扩容。

         
        说明 

        您也可以通过运行lsblk命令查看哪个分区待扩容。

    步骤1:扩容分区

    本操作以公共镜像Alibaba Cloud Linux 2.1903 LTS 64位操作系统、在ECS实例内部将云盘分区/dev/vdb1由40 GiB扩容至60 GiB(已在控制台扩大容量为60 GiB)为例,请您根据实际环境进行操作。

    1. 可选:根据准备工作获取的信息,如果您的云盘分区类型为MBR且在控制台扩容后容量大于2 TiB,需先转换分区为GPT分区。

      具体操作,请参见转换Linux数据盘的分区类型

    2. 运行以下命令,扩容指定分区。例如扩容分区名称为/dev/vdb1的分区,则执行如下命令。

       
      说明 

      命令参数中的/dev/vdb1之间需要空格分隔,1是分区编号。

      Alibaba Cloud Linux 2/3版本、CentOS 6及以上版本
      Debian 8及以上版本、Ubuntu14及以上
       
      • MBR分区

        type growpart || yum install -y cloud-utils-growpart
        LC_ALL=en_US.UTF-8
查看余下内容

docker端口绑定到ipv6导致ipv4请求无法转发的问题和解决

本文是对docker 端口绑定到ipv6 导致ipv4请求无法转发的问题的一些记录和解决过程。

问题症状

vmware虚拟机的 centos 7 里面运行了docker 的mysql服务,端口转发3306:3306,结果发现虚拟机外的系统无法访问到虚拟机的3306的数据库服务。

核心的原因

docker 对与ipv6默认是没有打开forwarding 设置的

首先官方的介绍:
在默认的配置中,流量的端口转发分为两种:内部流量转发(本机),外部流量转发(跨机器)

举个例子:

#docker run -d -p 80:80 nginx

这个操作会在iptables中增加如下策略(是的,docker所有的端口转发都是靠iptables实现的)

#iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 DOCKER     all  --  any    any     anywhere             anywhere             ADDRTYPE match dst-type LOCAL
 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
 
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    1    60 DOCKER     all  --  any    any     anywhere            !loopback/8          
查看余下内容

/etc/pam.d/system-auth-ac 写法错误导致root用户无法执行passwd命令的问题解决记录

问题产生过程

某用户 希望设置linux 在任何用户输入密码错误次数超过6次的情况下能触发 用户账号锁定40秒的防护功能(锁后root用户无法登录)。等40秒后,登录界面输入 root用户的正确密码,看能否登陆。但用户自行修改系统配置文件后,系统出现故障:root用户无法执行passwd命令。passwd命令执行后出现如下图的报错:

故障线索分析

注意 其中的一个关键错误:

passwd: module is unknown

illegal module type : root_unlock_time

看起来跟识别模块异常有关。以 module is unkonw 和 illegal module type : root_unlock_time 作为关键词,搜索查到跟 /etc/pam.d/system-auth-ac 相关。



根据/etc/pam.d/system-auth-ac 这个信息,打开文件查看内容。

初步解决验证尝试

给文件的 /etc/pam.d/system-auth-ac 的passwd相关的2行加了注释。
注释后这个文件的第3-4行内容是:

#auth required pam_tally2.so  onerr=fail  deny=6  unlock_time=40 even_deny_root   
#root_unlock_time=30 

注释后就不存在passwd执行后提示passwd: module is unknown的问题了。

但这些语句在 /etc/pam.d/system-auth-ac 文件中本来就有的,为什么突然会报错呢?

经过跟 纯净安装的 /etc/pam.d/system-auth-ac 文件原始内容比对,发现了原因: root_unlock_time=30 并不是单独成行的,用户不小心手动将 它换行,就不符合该文件的语法要求。这个system-auth-ac 文件因为语法错误就无法正常被解析,是本文错误的根源。

最终解决过程记录

请在 linux系统的单用户模式下,使用nano编辑器修正 system-auth-ac 文件内容:

nano   /etc/pam.d/system-auth-ac

以修改 /etc/pam.d/system-auth-ac 文件。
把原来的第3-4行改成:
auth required pam_tally2.so onerr=fail deny=6 unlock_time=40 even_deny_root root_unlock_time=30
(修改后就只剩一行,也就是把原来3-4行合并到一起) 注意even_deny_root root_unlock_time=30这是两个参数,它们之间至少要有用一个空格。

这样就启用了 rhel 5系统的 PAM方式防密码破解防护功能

如何验证是否生效

reboot命令,正常重启系统,如果能进入图形桌面,登录。就说明修改生效。

验证/etc/pam.d/system-auth-ac

查看余下内容

使用shell的grep过滤思路,查找lizardfs中副本数偏少的文件、查找lizardfs中损坏的文件

使用shell的grep等命令查找 /mnt/lizardfs/temp 目录的内的所有文件是否存在副本数异常的文件:

find /mnt/lizardfs/temp -type f -exec sh -c 'mfsfileinfo "{}" | grep -q "no valid copies" && echo "{}";' \;

命令说明

以上通过 find 的 -exec sh -c ‘xxxx’ \; 来对每个找到的文件执行 xxxx 操作,xxxx为 单引号内的具体脚本内容,在这个例子里面是mfsfileinfo "{}" | grep -q "no valid copies" && echo "{}"; 也就是先通过mfsfileinfo 获取文件信息,若文件只有元记录,但fileinfo的chunk丢失,mfsfileinfo 查询文件会返回no valid copies,根据这个条件成立的前提下,则可通过&& echo "{}"; 的方式,将问题文件的路径打印出来,实现后续的文件修复操作。

使用shell找出linux的 lizardfs 的副本数不足3份:

假设lizardfs的存储安全要求,副本数要求至少3份,如果某个文件的副本数不足3份,则打印出文件路径,以备后续增加对应文件的副本数。

find /mnt/lizardfs/temp -type f -exec sh -c 'mfsfileinfo "{}" | grep -q -c "copy 3" || echo "{}";' \;

本命令参考来源:https://github.com/lizardfs/lizardfs/issues/222查看余下内容

使用python3自带的trace模块跟踪调试脚本执行过程,实现python脚本的运行性能分析和问题调试

python 的 trace 调试介绍

python -m trace --trace xxxxx.py 是一种 Python 命令行方式,它可以用于代码调试和性能分析。具体来说,它可以让你跟踪 Python 程序的执行过程,记录下每个语句的执行情况,以及它们所花费的时间和调用次数等信息。

python trace运行方式的优势包括:

  1. 代码调试:trace 模块可以帮助你找出代码中的错误和潜在问题,因为它可以记录每个语句的执行情况,以及它们所花费的时间和调用次数等信息。这有助于你分析代码的执行过程,并找出可能导致程序崩溃或性能下降的问题。

  2. 性能分析:trace 模块还可以帮助你分析代码的性能问题,因为它可以记录每个语句的执行时间和调用次数等信息。这有助于你找出代码中的瓶颈,并进行优化,以提高程序的性能。

  3. 应用广泛:trace 模块是 Python 自带的标准库,因此在各种 Python 环境中都可以使用。无论是在本地开发环境中,还是在部署服务器上,都可以使用这种方式来进行代码调试和性能分析。

python trace方式潜在的问题

需要注意的是,在使用 trace 模块时,由于它会记录每个语句的执行情况,因此可能会对程序的性能产生一定影响,特别是对于大型程序和高并发程序来说,可能会影响程序的运行速度。因此,在使用 trace 模块时,需要谨慎选择需要跟踪的语句和模块,以避免对程序的性能产生太大的影响。

调试结果的输出如何保存为文件、如何可视化

python -m trace --trace xxxxx.py 命令行方式会将跟踪信息输出到标准输出,而不会生成 dump 文件。如果你需要将跟踪信息保存到文件中,可以使用 -o 选项指定输出文件名,例如:

python -m trace --trace -o trace.log xxxxx.py

这样就会将跟踪信息保存到 trace.log 文件中。

python trace实时查看运行状态

关于实时查看运行状态,trace 模块本身并没有提供实时查看运行状态的功能。但你可以在程序运行时,通过打印一些调试信息来实现实时查看的效果。例如,在程序中插入一些 print() 语句,输出一些关键信息,就可以在程序运行时实时查看运行状态。

python trace结果如何通过web界面查看?

若要通过web 面板查看结果python trace的结果,你可以使用一些第三方工具来对 trace 产生的跟踪信息进行可视化。例如,SnakeViz 工具可以将 trace 产生的跟踪信息可视化为交互式火焰图,帮助你更直观地分析和优化程序的性能。你可以通过 pip 命令安装 SnakeViz,然后使用以下命令启动:

pip install snakeviz

python -m cProfile -o trace.out
查看余下内容

ubuntu18.04 对 realtek RTL8822BE, RTL8822CE, RTL8821CE, RTL8723DE型号的网卡驱动的支持,解决华为matebook笔记本无线wifi无法识别的问题

ubuntu18.04 对 realtek RTL8822BE, RTL8822CE, RTL8821CE, 和 RTL8723DE 网卡驱动的支持,(例如华为 matebook有采用以上网卡)。按本文可以解决 Huawei MateBook 13 2020 和Huawei MateBook 14 的无线wifi无法识别的问题。
网卡型号: Realtek 8822CE Wireless LAN 802.11ac PCI-E NIC (a/b/g/n = Wi-Fi 4/ac = Wi-Fi 5),

这个驱动代码库,带有对RTL8822BE, RTL8822CE, RTL8821CE, and RTL8723DE等网卡的支持,在ubuntu 18.04 下测试可行。

sudo apt-get update
sudo apt-get install make gcc linux-headers-$(uname -r) build-essential git
git clone https://github.com/lwfinger/rtw88.git
#or https://gitee.com/kjpioo2006/rtw88
cd rtw88
make
sudo make install

这样操作即可。重启验证。

reboot
查看余下内容

书籍《Linux高效运维实战》推荐的一些Linux性能检测工具

linux下的性能监控工具命令

htop 命令

htop的优势是可以直接看到进程的启动命令。而且可以看进程树。支持水平、垂直方向 滚动。直接对该进程进行管理操作。

smem 命令

smem 是一款linux下的内存使用情况报告工具。能够给出linux下的内存使用的多种报告。和其他传统内存报告工具不通的是,有一个独特功能:报告PSS,即物理内存使用情况。

因为linux使用的虚拟内存,要准确计算一个进程实际使用的物理内存就不容易。但只知道一个进程的虚拟内存大小也并没有太大用处,因为还无法获取到实际占用的物理内存大小。

RSS (Resident Set Size)

使用top命令可以看到。表示进程占用的物理内存大小。但是将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。

PSS:(Proportional Set Size)

所有使用某共享库的程序均分该共享库的内存。显然所有进程的PSS之和就是系统的内存使用量。他会更准确一些,它将共享内存的大小进行平均后,再分摊到各个进程上去。

USS(Unique Set Size)

进程独自占用的内存。它只计算了进程独自占用的内存大小,不包含任何任何共享的部分。

smem 使用例子:

smem -p (百分比的形式查看内存使用情况)

smem -u (查看每个用户的内存使用情况)

smem -P nginx ( 查看某个进程占用内存大小)

smem -k -P nginx ( 查看某个进程占用内存大小) 

vmstat 命令可以看cpu 和内存(swap)、io占用情况。注意其中swap 即使有占用的话也要根据 si和so  来判断swap是否合理。

《linux高效运维实战》中,对swap占用的说明提到 ,vmstat 命令查询资源占用结果(以上第二图)里面 memory 列内的 swap列 表示切换到内存交换区的内存数量(KB 为单位)。如果swap值不为0,或者比较大,那么只要si 和so 的值长期 为0即没有影响 ( si 、 so全称是 swap in 和 swap out ,即换入 和 换出 的 交换内存量,即换入换出多的话会对IO产生实际压力)。这种情况下一般不用担心,不会影响系统性能。(如果si/so 长期不为0, 表示系统内存不足,需要增加系统内存)

iotop 可以监控磁盘I/O使用状况,检测到哪一个程序使用的磁盘I/O异常。

网络检测工具:

mtr 网络检测

mtr是linux 一个非常棒的网络连通性判断工具,结合了 ping traceroute,nslookup的相关特性。

列含义:

loss%是对应IP行的丢包率,值得一提的是,只有最后的目标丢包才算是真正的丢包。

Last列是最后一次返回的延迟,按毫秒计算的。

Avg列是所有返回延时的平均值。

Best列是最快的一次返回延时。

Wrst 是最差。

StDev列是标准偏差。

tcpdump 网络抓包分析工具命令

tcpdump 命令抓包分析:

参数:

-i 指定网卡,默认是eth0

-n线上IP,而不是hostname

-c 指定抓到多少个包后退出。

-A 以ASCII方式显示包的内容。这个选项对文本格式的协议包很有用。

-x 以16进制显示包的内容。

-vvv显示详细信息。

-s 按长包截取数据。默认是60字节,如何包大于60字节,则抓包会出现丢数据现象。所以一般会设置-s 0,这样会按照包的大小截取数据。并且抓到的是完整的包数据。

-r 从文件中读取(与-w 对应,例如,tcpdump -w test.out… 查看余下内容

linux发行版openEuler如何升级22.09版本到23.03

openEuler升级更新主要做以下几件事:

修改一下软件镜像源;
使用dnf删除缓存、再执行升级。

一、修改镜像源

镜像源主要有两种方式,一种是直接用网络镜像源,另一种是把安装时用的光盘映像文件(.iso)做成本地镜像源。
如果是学习、本地虚拟机开发,更推荐用本地镜像源,避免反复下载已经下载的内容,节省时间。如果使用本地镜像源,推荐下载名字里带everything的安装文件,例如:openEuler-23.03-everything-x86_64-dvd.iso。

1、通过本地镜像源升级

首先参考官方文档《 通过挂载ISO创建本地openEuler repo源配置本地yum源》,可以临时挂载CDROM到Linux系统的指定文件夹。但文章中的方法有局限性:如果系统重新启动,则需要重新执行mount指令进行挂载。

注1:
建议不要完全安装官方指南的操作,你可以在/etc/yum.repos.d目录下直接新建一个CDROM.repo文件,把CD镜像相关内容写到里面,不要修改系统原有的openEuler.repo。只要后缀名是.repo,都会被dnf识别到。设置好本地镜像源后,使用命令:

sudo mv openEuler.repo openEuler.repo.bak
为网络镜像源文件改名备份,这样dnf就只使用本地镜像源了。

注2:
重启Linux操作系统会导致挂载失效,如果要开机自动挂载,可以使用systemctl进行开机服务管理。比如,自己先创建一个mymount.sh脚本文件,添加挂载命令

/usr/bin/mount <被挂载的文件或目录> <挂载目标>
到文件中(绝对路径不要省略,因为系统刚开机,很多环境还没准备好,用上绝对路径才知道文件在哪里)。然后使用

sudo systemctl edit --force --full mymount
创建一个叫mymount的开机服务,然后在其中编写服务内容,大致格式和内容如下:

[Unit]
Description=自定义共享文件加载服务

[Service]
Type=forking
ExecStart=/usr/bin/bash .sh

[Install]
WantedBy=multi-user.target

2、通过网络镜像源升级

本方法的详细过程可以参考官方文档 《通过直接获取在线的openEuler repo源配置在线yum源》
复制一次系统原有的软件镜像源文件作备份:

sudo cp /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.bak

然后修改openEuler.repo:

sudo vim /etc/yum.repos.d/openEuler.repo

把每个url中包含的版本号都改成你想升级的版本号,具体url该改成什么样子,参考 openEuler Repo为你提供的镜像列表。

二、开始升级openEuler22.09版本到23.03

sudo dnf clean all
sudo dnf upgrade --allowerasing --nobest

执行以上命令开始升级。


注意:一部分包会因为dnf、yum的依赖关系而无法更新,这也是前面的指令使用–nobest的原因。
至于dnf、yum的更新,我还没有找到合适的帖子,搜索引擎都很蠢,搜到的都是教你如何使用dnf。

本文参考了:
https://forum.openeuler.org/t/topic/1150/3查看余下内容

大模型概念中的向量、向量数据库、向量检索、embeddings、实际应用示例

什么是向量数据库

再搞清楚这个问题之前,先需要知道什么是向量(vector)。

什么是向量

在AI领域中,向量是一个具有大小和方向的数学对象。它可以用来表示现实世界中的各种事物,例如图像、语音、文本等。

在机器学习和深度学习中,向量通常被用作表示数据的形式,其中每个向量的维度代表了不同的特征或属性。例如,在图像分类任务中,一个图像可以被表示为像素值组成的向量;在自然语言处理任务中,一句话可以被表示为单词嵌入(word embeddings)组成的向量。通过对这些向量进行计算和比较,机器可以从数据中提取出有用的信息,如相似性、聚类等。

拿比如人脸识别技术来说,计算机从照片或视频中提取出人脸的图像,然后将人脸图像转换为128维或者更高维度的向量。说到向量,就离不开embeddings。下面说下embeddings是什么。

什么是embeddings

embeddings是一个相对低维度的空间,可以将高维向量转换为低维度。embeddings使得在大型输入上搞机器学习更加容易,例如表示单词的稀疏向量。最理想的情况是,embeddings能够通过将语义上相似的输入放置在embeddings空间中彼此靠近来捕获输入的某些语义。可以在不同的模型中学习和重复使用嵌入。

这里有一个之前学习过的Google出品的机器学习的课程可以参考:课程网址

什么是向量检索

向量搜索是一种使用机器学习模型在索引中检测对象间语义关系的方法,以找到具有相似特征的相关对象。

向量搜索和推荐的解决方案变得越来越常见。如果你想在你的网站上添加自然语言文本搜索、创建图像搜索或构建强大的推荐系统,那么你就需要考虑使用向量技术。

为什么需要向量数据库

上面的一些概念解释了之后,其实在 AI 领域中,向量数据库是为了更高效地存储和检索大规模高维度的向量数据而设计的。由于传统的数据库系统并不擅长处理向量数据,因此需要专门的向量数据库来支持各种应用场景,例如语义搜索、图像检索、推荐系统等。

向量数据库被看做是Ai基础设施中最关键的一环,这种专门用于存储,索引和查询向量的数据库系统,可以让大模型更高效的存储和读取知识库,并且以更低成本的进行模型微调。Rust作为新基建的首选语言,也会在Ai基础设施中被大量采用。

与传统数据库不同,向量数据库可以使用特殊的索引结构和相似度度量方法,在高维度向量空间中快速查找相似的向量。例如,一些流行的向量数据库如 Faiss 和 Annoy 使用基于倒排索引和近似最近邻搜索(Approximate Nearest Neighbor Search)的技术,极大地加快了向量数据的查询速度。

向量数据库还提供了方便的 API 接口和工具库,使得用户可以轻松地将其集成到自己的应用程序中,并进行快速的向量搜索。因此,在许多需要处理大规模向量数据的 AI 应用中,向量数据库成为了不可或缺的组件。

向量数据库的实际应用:

我们以流行的向量数据库qdrant 为例,演示如何在实际业务中发挥向量数据库作用:

启动qdrant服务端

在Python中直接使用一个基于内存的qdrant的例子(类似sqlite本地数据库)

先安装python的依赖包,qdrant客户端:

pip install qdrant-client

python客户端提供了一种方便的方式在本地启动qrant 服务:

from qdrant_client import QdrantClient
qdrant = QdrantClient(":memory:") # 创建一个内存Qdrant实例,可以用来测试CICD
# 或者
# client = QdrantClient(path="path/to/db")  #使用持久化到磁盘的向量数据库文件

如果在生产中,则推荐使用命令直接运行docker容器作为qdrant服务端:

docker run -p 6333:6333 qdrant/qdrant

启动qdrant客户端

可以使用任何客户端库连接到服务端:

qdrant_client = QdrantClient("http://localhost:6333")
# 可参考官方具体应用例子https://qdrant.tech/documentation/examples/
# 如:
# 1. 语义搜索和推荐系统介绍。
# 2. 搜索和推荐报纸的文章。
# 3. 皮肤状况图像比对系统。
# 4.
查看余下内容
下一页 » « 上一页
加好友请备注:chinaoss
您可以在微信公众号联系我们
我们将24小时内回复。
取消