Llama-index, как выполнить поисковый запрос по индексу OpenSearch Elasticsearch?

У меня есть этот код, в котором я могу создать индекс в Opensearch Elasticsearch:

      def openes_initiate(file):
    

    endpoint = getenv("OPENSEARCH_ENDPOINT", "http://localhost:9200")
    # index to demonstrate the VectorStore impl
    idx = getenv("OPENSEARCH_INDEX", "llama-osindex-demo")
    
    UnstructuredReader = download_loader("UnstructuredReader")

    loader = UnstructuredReader()
    documents = loader.load_data(file=Path(file))

    # OpensearchVectorClient stores text in this field by default
    text_field = "content"
    # OpensearchVectorClient stores embeddings in this field by default
    embedding_field = "embedding"
    # OpensearchVectorClient encapsulates logic for a
    # single opensearch index with vector search enabled
    client = OpensearchVectorClient(endpoint, idx, 1536, embedding_field=embedding_field, text_field=text_field)
    # initialize vector store
    vector_store = OpensearchVectorStore(client)
    storage_context = StorageContext.from_defaults(vector_store=vector_store)
    # initialize an index using our sample data and the client we just created
    index = GPTVectorStoreIndex.from_documents(documents=documents,storage_context=storage_context)

Проблема, с которой я столкнулся, заключается в том, что после индексации данных я не могу перезагрузить их и выполнить к ним запрос. Я пытался сделать это:

      def query(index,question):
    query_engine = index.as_query_engine()
    res = query_engine.query(question)
    print(res.response)

Гдеindexэто тот, который я создал в первом фрагменте кода, но он возвращаетNone

1 ответ

вам необходимо создать клиент открытого поиска и загрузить индекс с помощью VectorStoreIndex.from_vector_store(), прежде чем вы сможете выполнить к нему запрос,

индексный объект имеет значение NULL, что не приведет к генерации нулевого результата.

Другие вопросы по тегам