llama_index 如何访问我稍后创建的raptor pack变量?

oyjwcjzk  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(70)

问题验证

  • 我已经在文档和discord上搜索了答案。

问题

如何在稍后访问raptor_pack变量?我正在使用这个在flask应用中,但我想使用raptor_pack.retriever调用查询引擎,因为我们发现这产生了更好的结果。试图找到一种方法,不用创建检索器并将其传递给RetrieverQueryEngine的参数,也不用cookies/全局变量等。

def createDepRaptors(path, document):
    client = chromadb.PersistentClient(path=f"./{path}")
    collection = client.get_or_create_collection(f"{path}")
    documents = document
    vector_store = ChromaVectorStore(chroma_collection=collection)

    raptor_pack = RaptorPack(
        documents,
        embed_model=OpenAIEmbedding(
            model="text-embedding-3-small"
        ),  # used for embedding clusters
        llm=OpenAI(model="gpt-3.5-turbo", temperature=0.1),  # used for generating summaries
        vector_store=vector_store,  # used for storage
        similarity_top_k=8,  # top k for each layer, or overall top-k for collapsed
        mode="collapsed",  # sets default mode
        transformations=[
            SentenceSplitter(chunk_size=400, chunk_overlap=50)
        ],  # transformations applied for ingestion
    )

    query_engine = RetrieverQueryEngine.from_args(raptor_pack.retriever, llm=OpenAI(model="gpt-3.5-turbo", 
     temperature=0.1))
ktca8awb

ktca8awb1#

嘿,@sohilbhatia!很高兴再次见到你。😄看起来你又给我们带来了一个有趣的谜题。让我深入研究raptor_pack的智慧,我会很快给你带来一些有用的东西。

slwdgvem

slwdgvem2#

假设您已经创建了一次索引,您可以执行以下操作:

raptor_pack = RaptorPack(
       [],
        embed_model=OpenAIEmbedding(
            model="text-embedding-3-small"
        ),  # used for embedding clusters
        llm=OpenAI(model="gpt-3.5-turbo", temperature=0.1),  # used for generating summaries
        vector_store=vector_store,  # used for storage
        similarity_top_k=8,  # top k for each layer, or overall top-k for collapsed
        mode="collapsed",  # sets default mode
        transformations=[
            SentenceSplitter(chunk_size=400, chunk_overlap=50)
        ],  # transformations applied for ingestion
    )

query_engine = RetrieverQueryEngine.from_args(raptor_pack.retriever, llm=OpenAI(model="gpt-3.5-turbo", 
     temperature=0.1))

注意,这里传入了一个空列表作为文档。这基本上是一个无操作,所以在需要时运行它是没有问题的。
如果您愿意,也可以直接导入并使用 RaptorRetriever

from llama_index.packs.raptor import RaptorRetriever

retriever = RaptorRetriever(
   [],
    embed_model=embed_model,
    llm=llm,
    similarity_top_k=similarity_top_k,
    vector_store=vector_store,
    mode=mode,
    verbose=verbose,
    transformations=transformations,
)
nzrxty8p

nzrxty8p3#

要在Flask应用程序中访问和使用raptor_pack变量,而无需重新创建索引或使用全局变量,请考虑将raptor_pack存储在Flask应用程序上下文中。这种方法确保raptor_pack只初始化一次,并在整个应用程序中可访问。以下是如何实现这一点:

  1. 在Flask应用程序启动时初始化raptor_pack:
from flask import Flask
from llama_index.packs.raptor import RaptorPack

app = Flask(__name__)

with app.app_context():
    app.raptor_pack = RaptorPack()
  1. 在路由或视图函数中访问raptor_pack:
from flask import current_app

@app.route('/use_raptor')
def use_raptor():
    raptor_pack = current_app.raptor_pack
    # Now you can use raptor_pack here
    return "Raptor Pack Accessed"

这种方法利用了Flask的app_context()来存储raptor_pack示例,使其在整个应用程序生命周期中可用,而无需全局变量或在周围传递示例。
有关更详细的指导,请参阅Flask documentation on application contexts

如果您正在考虑直接使用RaptorRetriever以获得对索引和检索过程的更多控制,请记住,RaptorPack为大多数用例提供了简化的高级接口。然而,如果需要超出RaptorRetriever提供的特定定制,直接使用RaptorRetriever可能会有所帮助。

详细信息

来源

此响应旨在帮助您节省时间并提高效率。它不是精确的解决方案,而是您自己研究的起点。
帮助我变得更有用!如果这有帮助,请留下一个👍,如果无关紧要,请留下一个👎。

  • 要继续对话,请提及@dosu。*

相关问题