mirror of
https://github.com/deepset-ai/haystack.git
synced 2025-07-31 04:38:23 +00:00

* Feat: Removing use of temp file while downloading archive from url along with adding CI for windows and mac platform * Windows CI by default installing pytorch gpu hence updating CI to pick cpu version * fixing mac cache build issue * updating windows pip install command for torch * another attempt * updating ci * Adding sudo * fixing ls failure on windows * another attempt to fix build issue * Saving env variable of test files * Adding debug log * Github action differ on windows * adding debug * anohter attempt * Windows have different ways to receive env * fixing template * minor fx * Adding debug * Removing use of json * Adding back fromJson * addin toJson * removing print * anohter attempt * disabling parallel run at least for testing * installing docker for mac runner * correcting docker install command * Linux dockers are not suported in windows * Removing mac changes * Upgrading pytorch * using lts pytorch * Separating win and ubuntu * Install java 11 * enabling linux container env * docker cli command * docker cli command * start elastic service * List all service * correcting service name * Attempt to fix multiple test run * convert to json * another attempt to check * Updating build cache step * attempt * Add tika * Separating windows CI * Changing CI name * Skipping test which does not work in windows * Skipping tests for windows * create cleanup function in conftest * adding skipif marker on tests * Run windows PR on only push to master * Addressing review comments * Enabling windows ci for this PR * Tika init is being called when importing tika function * handling tika import issue * handling tika import issue in test * Fixing import issue * removing tika fixure * Removing fixture from tests * Disable windows ci on pull request * Add back extra pytorch install step Co-authored-by: Malte Pietsch <malte.pietsch@deepset.ai>
51 lines
2.5 KiB
Python
51 lines
2.5 KiB
Python
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from haystack.nodes import Text2SparqlRetriever
|
|
from haystack.document_stores import GraphDBKnowledgeGraph
|
|
from haystack.utils import fetch_archive_from_http
|
|
|
|
|
|
@pytest.mark.graphdb
|
|
def test_graph_retrieval():
|
|
# TODO rename doc_dir
|
|
graph_dir = "../data/tutorial10_knowledge_graph/"
|
|
s3_url = "https://fandom-qa.s3-eu-west-1.amazonaws.com/triples_and_config.zip"
|
|
fetch_archive_from_http(url=s3_url, output_dir=graph_dir)
|
|
|
|
# Fetch a pre-trained BART model that translates natural language questions to SPARQL queries
|
|
model_dir = "../saved_models/tutorial10_knowledge_graph/"
|
|
s3_url = "https://fandom-qa.s3-eu-west-1.amazonaws.com/saved_models/hp_v3.4.zip"
|
|
fetch_archive_from_http(url=s3_url, output_dir=model_dir)
|
|
|
|
kg = GraphDBKnowledgeGraph(index="tutorial_10_index")
|
|
kg.delete_index()
|
|
kg.create_index(config_path=Path(graph_dir+"repo-config.ttl"))
|
|
kg.import_from_ttl_file(index="tutorial_10_index",
|
|
path=Path(graph_dir+"triples.ttl"))
|
|
triple = {'p': {'type': 'uri', 'value': 'https://deepset.ai/harry_potter/_paternalgrandfather'}, 's': {'type': 'uri', 'value': 'https://deepset.ai/harry_potter/Melody_fawley'}, 'o': {'type': 'uri', 'value': 'https://deepset.ai/harry_potter/Marshall_fawley'}}
|
|
triples = kg.get_all_triples()
|
|
assert len(triples) > 0
|
|
assert triple in triples
|
|
|
|
# Define prefixes for names of resources so that we can use shorter resource names in queries
|
|
prefixes = """PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
|
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
|
PREFIX hp: <https://deepset.ai/harry_potter/>
|
|
"""
|
|
kg.prefixes = prefixes
|
|
|
|
kgqa_retriever = Text2SparqlRetriever(knowledge_graph=kg,
|
|
model_name_or_path=model_dir+"hp_v3.4")
|
|
|
|
result = kgqa_retriever.retrieve(query="In which house is Harry Potter?")
|
|
assert result[0] == {'answer': ['https://deepset.ai/harry_potter/Gryffindor'], 'prediction_meta': {'model': 'Text2SparqlRetriever', 'sparql_query': 'select ?a { hp:Harry_potter hp:house ?a . }'}}
|
|
|
|
result = kgqa_retriever._query_kg(sparql_query="select distinct ?sbj where { ?sbj hp:job hp:Keeper_of_keys_and_grounds . }")
|
|
assert result[0][0] == "https://deepset.ai/harry_potter/Rubeus_hagrid"
|
|
|
|
result = kgqa_retriever._query_kg(
|
|
sparql_query="select distinct ?obj where { <https://deepset.ai/harry_potter/Hermione_granger> <https://deepset.ai/harry_potter/patronus> ?obj . }")
|
|
assert result[0][0] == "https://deepset.ai/harry_potter/Otter"
|