美文网首页OpenAi
Faiss 向量数据库使用

Faiss 向量数据库使用

作者: Chting | 来源:发表于2023-06-27 18:04 被阅读0次

langchain提供了多个向量数据库的使用,如Pinecone ,Chroma等, 最火的Pinecone 实际使用起来总感觉不太稳定,而且官网申请key有时候还不太方便,今天研究了下Faiss向量数据库的操作

引入相关包

from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.document_loaders import UnstructuredWordDocumentLoader,PyPDFium2Loader,DirectoryLoader,PyPDFLoader,TextLoader
from keys import OPENAI_API_KEY, PINECONE_API_KEY, PINECONE_API_ENV,OPENAI_API_BASE
import os
import json

加载数据到langchain,如上文使用的加载txt方法

##增加嵌入模型,api_base调用
embeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY,openai_api_base= OPENAI_API_BASE)

def documents2dict(documents):
    # 将Document对象列表转换为字典
    documents_dict = [
        {'page_content': document.page_content, 'metadata': document.metadata}
        for document in documents
    ]
    return documents_dict

def save_documents(documents,index = "faiss_index"):
    print("documents:",documents)
    docs = text_splitter.split_documents(documents)
    print("docs:",docs)
    db = FAISS.from_documents(docs, embeddings)
    db.save_local(index)
    return db

def get_documents(index="faiss_index", query="", limit=3):
    db = FAISS.load_local(index, embeddings)
    docs = db.similarity_search(query, k=limit)
    txts = documents2dict(docs)
    print("txts:",txts)
    return txts

directory_path = 'content'
document_list = load_txt(directory_path)
##循环加载数据到faiss
for documents in document_list:
    save_documents(documents)

搜索相似数据转为字典

index="faiss_index"
query = "What did the president say about Ketanji Brown Jackson"
txts = get_documents(index,query,3)
print(txts)
``

相关文章

  • faiss的安装使用

    1. Faiss简介 Faiss是Facebook开源的一款用于大规模P维向量最近邻检索的工具。 Faiss is...

  • 手把手教你安装Faiss(Linux)

    前言 由于最近项目组引用Faiss库(Faiss是由Facebook AI Research研发的为稠密向量提供高...

  • Faiss

    Faiss核心算法实现 Faiss是FAIR出品的一个用于向量k-NN搜索的计算库,其作用主要在保证高准确度的前提...

  • Faiss学习:一

    在多个GPU上运行Faiss以及性能测试 一、Faiss的基本使用 1.1在CPU上运行 Faiss的所有算法都是...

  • faiss简介及示例

    简介 faiss是为稠密向量提供高效相似度搜索和聚类的框架。由Facebook AI Research研发。 具有...

  • faiss 使用

    添加faiss到python路径 参照官网: https://github.com/facebookresearc...

  • faiss安装及使用

    一、安装 方法一:通过anaconda安装 下载anaconda: 1. 下载anaconda (仅供参考:htt...

  • 向量的长度和单位长度_线性代数_day5

    向量的长度 向量的长度又叫向量的模,使用双竖线来包裹向量表示向量的长度 下面是二维向量中取模的算法,使用勾股定理即...

  • 使用python来实现向量的基本运算操作

    向量的长度 向量的长度又叫向量的模,使用双竖线来包裹向量表示向量的长度 下面是二维向量中取模的算法,使用勾股定理即...

  • 学习小组Day6笔记--jam

    数据类型 向量、矩阵、数据库、数组、列表

网友评论

    本文标题:Faiss 向量数据库使用

    本文链接:https://www.haomeiwen.com/subject/duynydtx.html