使用llamaindex的TextNode构建知识库

背景:

        有一些<知识点:知识点解释>格式的数据,需要根据一句话找到对应的知识点。

代码:

        使用的还是bge-large-zh-v1.5

Settings.tokenizer = AutoTokenizer.from_pretrained(
    "<your path>/bge-large-zh-v1.5",
)
Settings.embed_model = HuggingFaceEmbedding(model_name = "<your path>/bge-large-zh-v1.5")
os.environ["CUDA_LAUNCH_BLOCKING"] = "1"

我希望将知识点和知识点解释都构建在知识库内,所以先将字典处理成字符串

all_data = []
for k, v in datas.items():
    all_data.append(f"{k}: {v}")
    nodes = []
    for data in tqdm(all_data):
        node = TextNode(text=data,id_ = data.split(":")[0]) #构建知识库
        nodes.append(node) #储存所有nodes

    index = VectorStoreIndex(nodes) #将所有Nodes组成index
    index.storage_context.persist("<your path>") #Index持久化

后续加载index:

def load_retriever(persist_dir):
    context = StorageContext.from_defaults(persist_dir=persist_dir)
    index = load_index_from_storage(context)
    return index.as_retriever(similarity_top_k=3)

topk需要多少写多少即可

加载后使用:

knows_infos = retriever.retrieve(question) #question是待匹配的句子
knows = [know_info.node.id_ for know_info in knows_infos] #knows是单纯的知识点
know_and_infos = [know_info.node.text for know_info in knows_infos] #know and infos是知识点:知识点解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值